Spring中配置DataSource的六种⽅式
第⼀种:l
Xml代码
1. <bean id="dataSource" class="org.apachemons.dbcp.BasicDataSource"
2.    destroy-method="close">
3.    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
4.    <property name="url"
5.        value="jdbc:sqlserver://localhost:1433;DatabaseName=spring" />
6.    <property name="username" value="sa" />
7.    <property name="password" value="********" />
8. </bean>
第⼆种:l
<bean id="mappings"
Xml代码
1. class="org.springframework.fig.PropertyPlaceholderConfigurer">
2.      <property name="locations" value="classpath:jdbc.properties"></property>
3.      </bean>
4.    <bean id="dataSource" class="org.apachemons.dbcp.BasicDataSource"
5.        destroy-method="close">
6.        <property name="driverClassName" value="${jdbc.driverClassName}" />
7.        <property name="url" value="${jdbc.url}" />
8.        <property name="username" value="${jdbc.username}" />
9.        <property name="password" value="${jdbc.password}" />
10.    </bean>
在src⽂件夹⾥新建⼀个jdbc.properties⽂件,⾥⾯的内容为如下:
Xml代码
1. jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
2. jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring
3. jdbc.username=sa
4. jdbc.password=********
第三种:
Xml代码
1. <bean id="mappings"
2.      class="org.springframework.fig.PropertyPlaceholderConfigurer">
3.      <property name="locations" value="classpath:jdbc.properties"></property>
4.      </bean>
5.    <bean id="dataSource" class="org.apachemons.dbcp.BasicDataSource"
6.        destroy-method="close">
7.        <property name="driverClassName" value="${jdbc.driverClassName}" />
8.        <property name="url" value="${jdbc.url}" />
9.        <property name="username" value="${jdbc.username}" />
10.        <property name="password" value="${jdbc.password}" />
11.    </bean>
12.
13. <context:property-placeholder location="classpath:jdbc.properties" />在src⽂件夹⾥新建⼀个jdbc.properties⽂件,⾥⾯的内容为如
下:
14. jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
15. jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring
16. jdbc.username=sa
17. jdbc.password=********
其中第⼆种与第三种类似,只是指定配置⽂件的⽅法不⼀样。
第四种:
Xml代码
1. <bean id="mappings"
2.    class="org.springframework.fig.PropertyPlaceholderConfigurer">
3.
4.  <!-- typed as a java.util.Properties -->
5.  <property name="properties">
6.    <value>
7.    jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
8.    jdbcjdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=spring
9.    jdbc.username=sa
10.    jdbc.password=********
11.    </value>
12.  </property>
13. </bean>
14.
15.    <bean id="dataSource" class="org.apachemons.dbcp.BasicDataSource"
16.        destroy-method="close">
17.        <property name="driverClassName" value="${jdbc.driverClassName}" />
18.        <property name="url" value="${jdbc.url}" />
19.        <property name="username" value="${jdbc.username}" />
20.        <property name="password" value="${jdbc.password}" />
21.    </bean>
第五种:
Xml代码
1. l
spring怎么读取配置
2. <bean id="myDataSource" class="org.apachemons.dbcp.BasicDataSource"
3.      destroy-method="close"
4.      p:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
5.      p:url="jdbc:sqlserver://localhost:1433;DatabaseName=spring"
6.      p:username="sa"
7.      p:password="********"/>
再加上命名空间:
Xml代码
1. xmlns:p="/schema/p"
性能参数要根据实际情况测试得来的数据确定如何配置。
转⾃:www.cppblog/fenglin/articles/130494.html
第六种,在⽹上看到
Spring中提供了⼀种简便的⽅式就是context:property-placeholder/元素
只需要在spring的配置⽂件⾥添加⼀句
Xml代码
1. <context:property-placeholder location="classpath:jdbc.properties"/>
即可,这⾥location值为参数配置⽂件的位置,参数配置⽂件通常放在src⽬录下,⽽参数配置⽂件的格式跟java通⽤的参数配置⽂件相同,即键值对的形式,例如:
#jdbc配置
配置⽂件代码
1. test.jdbc.sql.jdbc.Driver
2. test.jdbc.url=jdbc:mysql://localhost:3306/test
3. test.jdbc.username=root
4. test.jdbc.password=root
⾏内#号后⾯部分为注释
应⽤:
1.这样⼀来就可以为spring配置的bean的属性设置值了,⽐如spring有⼀个jdbc数据源的类DriverManagerDataSource
在配置⽂件⾥这么定义bean:
Java代码
1. <bean id="testDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
2.    <property name="driverClassName" value="${test.jdbc.driverClassName}"/>
3.    <property name="url" value="${test.jdbc.url}"/>
4.    <property name="username" value="${test.jdbc.username}"/>
5.    <property name="password" value="${test.jdbc.password}"/>
6. </bean>
注意配置⽂件中
<bean id="accountDao" class="my.dao.impl.AccountDaoImpl">
  <property name="dataSource" ref="dataSource"/>
</bean>
2.甚⾄可以将${ }这种形式的变量⽤在spring提供的注解当中,为注解的属性提供值
外在化应⽤参数的配置
在开发企业应⽤期间,或者在将企业应⽤部署到⽣产环境时,应⽤依赖的很多参数信息往往需要调整,
⽐如LDAP连接、RDBMS JDBC连接信息。对这类信息进⾏外在化管理显得格外重要。PropertyPlaceholderConfigurer和PropertyOverrideConfigurer对象,它们正是担负着外在化配置应⽤参数的重任。
<context:property-placeholder/>元素
PropertyPlaceholderConfigurer实现了BeanFactoryPostProcessor接⼝,它能够对<bean/>中的属性值进⾏外在化管理。开发者可以提供单独的属性⽂件来管理相关属性。⽐如,存在如下属性⽂件,摘⾃userinfo.properties。
Properties代码
1. db.username=scott
2. db.password=tiger
如下内容摘⾃l。正常情况下,在userInfo的定义中不会出现${db.username}、${db.password}等类似信息,这⾥采⽤PropertyPlaceholderConfigurer管理username和password属性的取值。DI容器实例化userInfo
前,PropertyPlaceholderConfigurer会修改userInfo的元数据信息(<bean/>定义),它会⽤userinfo.properties中db.username对应的scott值替换${db.username}、db.password对应的tiger值替换${db.password}。最终,DI容器在实例化userInfo时,UserInfo便会得到新的属性值,⽽不是${db.username}、${db.password}等类似信息。
Java代码
1. <bean id="propertyPlaceholderConfigurer"
2.        class="org.springframework.fig.
3. PropertyPlaceholderConfigurer">
4.    <property name="locations">
5.        <list>
6.            <value>userinfo.properties</value>
7.        </list>
8.    </property>
9. </bean>
10.
11. <bean name="userInfo" class="test.UserInfo">
12.  <property name="username" value="${db.username}"/>
13.  <property name="password" value="${db.password}"/>
14. </bean>
通过运⾏并分析PropertyPlaceholderConfigurerDemo⽰例应⽤,开发者能够深⼊理解PropertyPlaceholderConfigurer。为简化PropertyPlaceholderConfigurer的使⽤,Spring提供了<context:property-placeholder/>元素。下⾯给出了配置⽰例,启⽤它后,开发者便不⽤配置PropertyPlaceholderConfigurer对象了。
<context:property-placeholder location="userinfo.properties"/>
PropertyPlaceholderConfigurer内置的功能⾮常丰富,如果它未到${xxx}中定义的xxx键,它还会去JVM系统属性
(Property())和环境变量(v())中寻。通过启⽤systemPropertiesMode和searchSystemEnvironment属性,开发者能够控制这⼀⾏为。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。