0

Spring 3.1 でプロファイルの使用を開始したいのですが、問題が見つかりました。

設定した休止状態のxmlファイルで

<beans profile="test">

    <context:property-placeholder location="/WEB-INF/springtest.properties" />


</beans>

<beans profile="production">

    <context:property-placeholder location="/WEB-INF/spring.properties" />


</beans>

そして、私が設定したweb.xmlで:

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <init-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>production</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

しかし、アプリケーションを実行しようとすると、問題が発生します。そのスプリングはspring.propertiesファイルから変数を認識しません。

私は何か他のものを設定する必要がありますか?

アップデート

休止状態ファイルは次のようになります。

    <?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p" 
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.1.xsd
            ">

    <context:property-placeholder location="/WEB-INF/spring.properties" />


    <!-- Enable annotation style of managing transactions -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    <!-- <tx:annotation-driven/> -->

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
                 p:dataSource-ref="dataSource"
                 p:configLocation="${hibernate.config}"
                 p:packagesToScan="com.app.search">
        <property name="annotatedClasses">
            <list>
                <value>com.app.search.domain.UsersEntity</value>
                <value>com.app.search.domain.CategoryEntity</value>
                <value>com.app.search.domain.GroupEntity</value>
                <value>com.app.search.domain.PlacesEntity</value>
                <value>com.app.search.domain.ProvincesEntity</value>
                <value>com.app.search.domain.PageAreaEntity</value>
                <value>com.app.search.domain.PageConfigurationEntity</value>
                <value>com.app.search.domain.PageTemplateEntity</value>
                <value>com.app.search.domain.PageTypeEntity</value>
                <value>com.app.search.domain.PageModuleEntity</value>
                <value>com.app.search.domain.PageModuleAreaConfigurationEntity</value>
                <value>com.app.search.domain.PageModuleConfigurationEntity</value>
                <value>com.app.search.domain.PageFacetEntity</value>
                <value>com.app.search.domain.PageFacetAreaEntity</value>
                <value>com.app.search.domain.PageTemplateFacetEntity</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.connection.url">jdbc:mysql://localhost/Search</prop>
                <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
                <prop key="hibernate.connection.username">root</prop>
                <prop key="hibernate.connection.password"></prop>
            </props>
        </property>
    </bean>


    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${app.jdbc.driverClassName}" />
        <property name="url" value="${search.jdbc.url}" />
        <property name="username" value="${search.jdbc.user}" />
        <property name="password" value="${search.jdbc.password}" />
    </bean>


    <!-- Declare a transaction manager-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory">
        <qualifier value="transactionManager"/>
    </bean>

    <beans profile="test">

        <context:property-placeholder location="/WEB-INF/springtest.properties" />


    </beans>

    <beans profile="production">

        <context:property-placeholder location="/WEB-INF/spring.properties" />

    </beans>



</beans>
4

1 に答える 1

3

その理由は、ContextLoaderListener を介してロードされたルート アプリケーション コンテキストでこれが必要なため、プロファイルを指定する方法は、DispatcherServlet の init パラメータではなく、ServletContext の init パラメータを介して、次のように web.xml ファイルにあるためだと思います。

<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>production</param-value>
</context-param>
于 2012-09-26T13:43:33.227 に答える