blo*_*824 12 java configuration spring datasource
我试图弄清楚我的Spring应用程序如何确定它的部署位置并加载适当的数据源.我们有3个环境......我的本地,开发服务器和生产服务器.到目前为止,我有3个属性文件调用
localhost.datasource.properties
development.datasource.properties
production.datasource.properties
Run Code Online (Sandbox Code Playgroud)
我让他们像这样:
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/resources/properties/production.datasource.properties</value>
<value>classpath:/resources/properties/development.datasource.properties</value>
<value>classpath:/resources/properties/localhost.datasource.properties</value>
</list>
</property>
</bean>
<bean id="dataSourceMySQL" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${mysql.jdbc.driver.class.name}"
p:url="${mysql.jdbc.url}"
p:username="${mysql.jdbc.username}"
p:password="${mysql.jdbc.password}" />
</beans>
Run Code Online (Sandbox Code Playgroud)
当我在我的localhost机器上时,这很好用.如果我将war文件部署到开发中,它仍然在读取localhost属性,因为它是列表中的最后一个,我收到错误.实现这个的最佳方法是什么?
谢谢
ben*_*y23 15
对于数据源,最简单的方法是定义数据源并让容器管理连接池.
为此,请在web.xml中定义对数据源的资源引用
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/MyDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
并在春天引用它:
<jee:jndi-lookup
id="dataSource"
jndi-name="jdbc/MyDataSource" />
Run Code Online (Sandbox Code Playgroud)
然后,您可以在应用程序服务器中定义数据源,这意味着您可以更改基础数据库.对于websphere,这将通过websphere控制台完成.在tomcat的情况下,它将通过Context.xml完成:
<Context>
...
<Resource name="jdbc/MyDataSource" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest"/>
</Context>
Run Code Online (Sandbox Code Playgroud)
这样,您只需要更改上下文以部署到开发,测试和生产,并且不要将应用程序绑定到特定数据库.
| 归档时间: |
|
| 查看次数: |
20083 次 |
| 最近记录: |