spring配置文件、组件读取外部properties文件方式;PropertiesFactoryBean和PropertyPlaceholderConfigurer的区别
一、spring配置文件、组件读取外部properties文件方式
-- spring配置文件
<bean id="mySqlDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="username"><value>${jdbc.user}</value></property> <property name="password"><value>${jdbc.password}</value></property> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <property name="url"><value>${jdbc.url}</value></property> </bean>
-- properties文件内容 jdbc.properties jdbc.url=jdbc:mysql://localhost:3306/cp?useUnicode=true&charaterEncoding=utf-8 jdbc.user=root jdbc.password=123456 jdbc.driverClass=com.mysql.jdbc.Driver
方式一、
在 spring 的配置文件中,加入引入until命名空间:
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.0.xsd"
<util:properties id="propertiesReader" location="classpath:test.properties" />
方式二、
<context:property-placeholder location="classpath:conn.properties"/>
方式三、读取多个 properties 文件
<bean id="propertiesReader"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<!--只会到项目class路径中查找找文件-->
<value>classpath:*.properties</value>
<!--不仅会到当前项目class路径,还会到包括jar文件中(class路径)进行查找; 推荐第一种,比较快-->
<!--<value>classpath:*.properties</value>-->
</list>
</property>
</bean>
或
<bean id="propertiesReader"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!--只会到项目class路径中查找找文件-->
<value>classpath:*.properties</value>
<!--不仅会到当前项目class路径,还会到包括jar文件中(class路径)进行查找; 推荐第一种,比较快-->
<!--<value>classpath:*.properties</value>-->
</list>
</property>
</bean>
PropertiesFactoryBean和PropertyPlaceholderConfigurer的区别如下:
使用 PropertyPlaceholderConfigurer 时,spring组件取值时 @Value表达式的用法是 @Value(value="${properties key}") ,
使用 PropertiesFactoryBean 时,spring组件取值时@Value表达式的用法是 @Value(value="#{configProperties['properties key']}")
@Value(value="${profit.rate.csProfitRate}") double rate; @Value(value="#{configProperties['profit.rate.csProfitRate']}") double rate2;
// 变量要有getter和setter方法
原文地址:https://www.cnblogs.com/jetqiu/p/12028719.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释