spring启动从数据库加载公共属性
样例配置文件.
配置文件名db.properties,下面会用到
jdbc.driver=com.mysql.jdbc.Driver
jdbc.Url=jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&useSSL=false
jdbc.user=root
jdbc.password=root
两种在xml中使用展位符号的配置
为什么要配置这个,是为了在后面的bean注入不用将value的数据写死,而是从我们的properties的直接获取。
1.context:property-placeholder
它是以声明bean方式来使用,创建了一个bean,下面使用的时候通过SpEL表达式#{}获取bean的属性。
<util:properties id="config" location="classpath:db.properties" />
需要注意,这种方式需要在spring配置文件头部声明
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"
配置数据库使用样例
<!-- 数据源:C3P0 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 基本属性 driverClassName、url、user、password -->
<property name="driverClass" value="#{jdbc.driverClass}" />
<property name="jdbcUrl" value="#{jdbc.url}" />
<property name="user" value="#{jdbc.user}" />
<property name="password" value="#{jdbc.password}" />
</bean>
2.util:properties
它是将配置文件加载至spring上下文中,然后通过${}取得值,常用于bean的属性上
<context:property-placeholder location="classpath:db.properties"/>
配置数据库使用样例
<!-- 数据源:Druid -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!-- 基本属性 driverClassName、url、user、password -->
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
spring启动从数据库加载公共属性
查询配置表的bean
这个bean是通过构造方法注入的,index是对应的参数,顺序不能乱,通过顺序传入的参数。下面是我截取的源码。
<bean name="databaseConfiguration" class="org.apache.commons.configuration.DatabaseConfiguration">
<constructor-arg index="0" value="dataSource"/>
<constructor-arg index="1" value="配置表的表名字"/>
<constructor-arg index="3" value="配置表的key的列名"/>
<constructor-arg index="4" value="配置表的value的列名"/>
</bean>
此时我们就可以将项目中业务类可以直接注入databaseConfiguration使用,实时查询配置信息
该bean注入到ioc容器是一个Properties对象
<bean name="applicationProperties" class="org.springmodules.commons.configuration.CommonsConfigurationFactoryBean">
<constructor-arg ref="databaseConfiguration"/>
</bean>
使用展位符号
这样,就可以在xml配置文件里用展位符号,业务bean里的属性也可以用占位符号
<context:property-placehoder properties-ref=applicationProperties />