Bootstrap

spring启动从数据库加载公共属性

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 />
;