总结:
1.@PropertySource 注解内部 @Repeatable(PropertySources.class) :可重用注解
- 意味着可以加载多个配置文件
- 也可以@PropertySources多个@PropertySource
2.开发中通常使用@Value注解
3.配置文件中的k/v默认都保存到运行的环境变量中;
- 加载完外部的配置文件以后使用@Value注解 ${}取出配置文件的值
- 也可以使用applicationContext.getEnvironment().getProperty("")获取
public class Person {
//使用@Value赋值;
//1、基本数值
//2、可以写SpEL;ognl表达式 #{}
//3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的值)
// @Value("张三跑")
private String name;
// @Value("#{20-2}")
private Integer age;
// @Value("${person.nickName}")
private String nickName;
}
默认在resources目录下 properties文件
person.nickName=小李四
多个配置文件想要加载指定的外部配置文件怎么办呢
//使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出配置文件的值
@PropertySource(value={
"classpath:/person.properties",
"classpath:/dbconfig.properties"
})
@Configuration
public class MainConfigOfPropertyValues {
@Bean
public Person person(){
return new Person();
}
}
注解内部 @Repeatable(PropertySources.class) :可重用注解
以为这可以加载多个配置文件;也可以@PropertySources多个@PropertySource
4.配置文件中的k/v默认都保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出配置文件的值
可以使用applicationContext.getEnvironment().getProperty("")获取
ConfigurableEnvironment environment = applicationContext.getEnvironment();
String property = environment.getProperty("person.nickName");
System.out.println(property);