@PropertySource注解可以从properties文件中,获取对应的key-value值,将其赋予变量;
1.一个典型用法:
首先有一个config.properties文件内容如下:
demo.url = 1.2.3.4
demo.db = helloTest
下面是java程序:
@Configuration
@PropertySource("classpath:config.properties")
public class AppConfigMongoDB {
//1.2.3.4
@Value("${demo.url}")
private String mongodbUrl;
//hello
@Value("${demo.db}")
private String defaultDb;
}
2.通过运行环境spring中的Environment设置:
@Configuration
@ComponentScan(basePackages = { "com.mkyong.*" })
@PropertySource("classpath:config.properties")
public class AppConfigMongoDB {
@Autowired
private Environment env;
@Bean
public MongoTemplate mongoTemplate() throws Exception {
String mongodbUrl = env.getProperty("mongodb.url");
String defaultDb = env.getProperty("mongodb.db");
}
3.OGNL解析:
@Configuration
@PropertySource("file:${app.home}/app.properties")
public class AppConfig {
@Autowired
Environment env;
}
上述中的app.home可以在启动时设置,如下:
System.setProperty("app.home", "test");
java -jar -Dapp.home="/home/mkyon/test" example.jar
4.同时包含多个文件:
@PropertySource({
"classpath:config.properties",
"classpath:db.properties" //if same key, this will 'win'
})
5.Spring4中对这个注解进行了功能增强,增加了@PropertySources注解,相当于其父标签,下面可以包括多个子PropertySource注解,示例如下:
@PropertySources({
@PropertySource("classpath:config.properties"),
@PropertySource("classpath:db.properties")
})
6.当扫描的文件不存在时,可以通过设置
ignoreResourceNotFound
属性进行忽略错误。