我使用Spring bean配置文件来分隔每个数据源环境:
<bean id="fooJDBCTemplate" class="com.rakuya.r_erp.task.dao.FooJDBCTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<beans profile="dev">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://somewhere:3306/erp?characterEncoding=UTF-8" />
<property name="username" value="" />
<property name="password" value="" />
</bean>
</beans>
<beans profile="qa">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://somewhere:3306/erp?characterEncoding=UTF-8"/>
<property name="username" value=""/>
<property name="password" value=""/>
</bean>
</beans>
<beans profile="prod">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://somewhere:3306/erp?characterEncoding=UTF-8"/>
<property name="username" value=""/>
<property name="password" value=""/>
</bean>
</beans>
我使用以下命令构建jar文件并指定配置文件
mvn clean package -Dspring.profiles.active=prod
但是我在执行jar文件时遇到了没有定义dataSource的错误。 似乎Maven没有使用Spring配置文件来构建jar。
如何配置Maven或Spring peofile以使用dataSource?
THX
答案 0 :(得分:2)
运行应用时,您需要传递配置文件-D开关。
答案 1 :(得分:2)
由于你的熊都是相同的类型(DriverManagerDataSource),并且环境之间唯一不同的是一些属性,我认为最好摆脱弹簧配置文件并使用属性来设置这些值。 PropertyPlaceholderConfigurer应该能够处理这种情况,您可以在其中设置vm参数,指定所需的环境。像-Denv = dev这样的东西。
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:${env}.properties</value>
</list>
</property>
</bean>
然后您只需要一个如下所示的数据源bean:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
每个环境的属性文件名为dev.properties,qa.properties和prod.properties,每个环境的值都包含db.driver,db.url等。
当spring启动时,它将根据-Denv传入的值选择适当的属性文件,并将相应的属性值加载到数据源bean中。