外部化配置文件,与value注解相比,@ConfigurationProperties注解更能体现出在“分组”这个层次
下面以spring cloud示例,现在GIT上的yml文件内容如下(个人更喜欢properties格式)
a:
b:
c:
- {name: dabao}
- {name: tabao}
注意yml格式规则,每个冒号后边都有一个空格,千万注意
现在建立一个类,这个类存放上述yml中的值
注意:类中必须有get,set方法,否则注解不生效,文章为了简短故省略掉而已
类1
@Component
@ConfigurationProperties(prefix = "a")
public class MyYml {
Map<String, List<User>> b = new HashMap<>();
//为了文章精简,此处省略get,set方法,但是,get,set方法必须要写到你的代码里
//否则ConfigurationProperties不生效
}
类2
public class User {
private String name;
//为了文章精简,省略get,set方法,但是,get,set方法必须要写到你的代码里
//否则ConfigurationProperties不生效
}
项目启动之后,可以自己调试一下,可以观察到MyYml实例已经获取到数据
//注意面向对象思想以及spring支持@Autowired和@Resource 两个注解的目的,MyYml不是接口,故此处使用Resource,来告知后续维护的同事MyYml是一个java类而非接口
@Resource
MyYml myYml;