@value
注入属性
实体
@Value("${demo.name}")
private String name;
@Value("${demo.list}")
private List<Object> list;
@Value("${demo.shu}")
private String[] shu;
@Value("${demo.set}")
private Set<Object> set;
@Value("${demo.map}")
private Map<String,Object> map;
默认配置类
//正常
demo.name=看看
//list
demo.list=看看,看看,看看
//数组
demo.shu=看看,看看,看看
//set
demo.set=看看,看看,看看
//map
demo.map= #{ {name:"hanmeimie",age:21}}
测试仅用了List的,其他大体类似
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
MyConfig myConfig = context.getBean(MyConfig.class);
List map=myConfig.getList();
for (Object o : map) {
System.out.println(o);
}
@PropertySource("classpath:admin.properties")
手动配置文件,当不使用这个注解时,使用默认的配置文件,加入这个注解在后面括号里输入相应的配置文件的路径,这个配置类使用的是自己手动选择的配置文件
@ConfigurationProperties(prefix = "admin")
前缀,当加入这个注解时,前缀输入完全的情况下,可以不使用@vaule注解,但是最后的要与实体名保持一致。
可以与@PropertySource进行搭配完成手动配置文件并加上前缀不写@value
自己定义的配置文件里面的内容
admin.name=张三
admin.pwd=lisi
这里的前缀为admin
demo.demp.admin.name=张三
这里的前缀为demo.demp.admin
使用前缀注解后实体的样子
@Configuration
@Data
@PropertySource("classpath:admin.properties")
@ConfigurationProperties(prefix = "admin")
public class AdminConfig {
private String name;
private String pwd;
}