版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/45083053
前言:我不得不说,在配置spring的jdbc链接上,我犯了很多错,虽然我一再改善,并且寻求更加简洁的解决方案,然而都一直未能最终解决,我必须感谢我的队友,是他轻松的找到了这个解决方案,而我一直苦苦寻找的就是它。spring的占位符,通过简单的context:property-placeholder元素,就可以轻松的配置jdbc链接,但是这是一个曲折的故事,你听我来诉苦,并且得到你想要的答案。
最初的样子
<bean
id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property
name="driverClassName"
value="com.mysql.jdbc.Driver"></property>
<property
name="url"
value="jdbc:mysql://127.0.0.1:3306/gong1?useUnicode=true&characterEncoding=utf8&"></property>
<property
name="username"
value="root"></property>
<property
name="password"
value="123456"></property>
这种死板的样子,让我受尽苦难,因为我的项目通常需要在不同的服务器上运行,而所需要的ip和用户名密码和本地的均不相同,我只能在每次打成jar包后,先解压改成我想要的,然后再使用。
接下来的样子
<context:property-placeholder location="conf/jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
jdbc.url=jdbc:mysql://127.0.0.1:3306/gong?useUnicode=true&characterEncoding=utf8&
jdbc.username=root
jdbc.password=123456
我好像学到了什么,我使用了占位符,看似我就成功了,只要我改动jdbc.properties文件就OK了,然而我依然深受其害,因为,按照
location="conf/jdbc.properties"的写法,我依然需要改动jar包中的jdbc.properties,而不是我对应相对路径下的jdbc.properties。后来我虽然尝试了很多诸如classpath://conf/jdbc.properties,还有file://conf/jdbc.properties等等各种形式,然而都没有效果,显然我没有找到正确的方案。
最终版
结构图(jdbc.properties文件在conf文件夹下)
<context:property-placeholder location="file:./conf/jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
jdbc.url=jdbc:mysql://127.0.0.1:3306/gong?useUnicode=true&characterEncoding=utf8&
jdbc.username=root
jdbc.password=123456
通过在对应目录下运行java -jar communicate.jar就会链接成功了,而不再是找不到对应的目录了。“./”就意味着去找jar包所在路径的上一层。这样的话,相对路径的方案就解决了问题,每一台服务器上只需要配置一次jdbc.properties。