1.@ProtertySource
@PropertySouce是spring3.1开始引入的基于java config的注解。
通过@PropertySource注解将properties配置文件中的值存储到Spring的 Environment中,Environment接口提供方法去读取配置文件中的值,参数是properties文件中定义的key值。
2. 例子
比如有一个配置文件config.properties
jdbc.driver = oracle.jdbc.driver.OracleDriver
jdbc.url = jdbc\:oracle\:thin\:@(DESCRIPTION\=(ADDRESS\=(PROTOCOL\=TCP)(HOST\=10.221.129.208)(PORT\=1523))(CONNECT_DATA\=(SERVICE_NAME\=otatransuser)))
jdbc.username= sassy
jdbc.password = password
2.1 用法1- @PropertySource和@Value
创建java配置类
@Configuration
@PropertySource("classpath:jdbc.properties")public classPropertiesWithJavaConfig {
@Value(${jdbc.driver})privateString driver;
@Value(${jdbc.url})privateString url;
@Value(${jdbc.username})privateString username;
@Value(${jdbc.password})privateString password;
//要想使用@Value 用${}占位符注入属性,这个bean是必须的,这个就是占位bean,另一种方式是不用value直接用Envirment变量直接getProperty('key')
@Beanpublic staticPropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {return newPropertySourcesPlaceholderConfigurer();
}
}
2.2 用法2-通过Environment设置
@Configuration
@PropertySource("classpath:jdbc.properties")public classPropertiesWithJavaConfig {
@AutowiredprivateEnvironment env;
}
接着就可以用env.getProperty("jdbc.driver")得到相应的属性值
3.等同于在xml中配置properties文件
?xml version="1.0" encoding="UTF-8"?>
在Spring 4中,Spring提供了一个新的注解——@PropertySources,从名字就可以猜测到它是为多配置文件而准备的。
@PropertySources({
@PropertySource("classpath:config.properties"),
@PropertySource("classpath:db.properties")
})
public class AppConfig {
//something
}