在Spirng项目中一般使用Spring的@Value注解 或@ConfigurationProperties 的Properties进行参数注入,这样就可以获得配置文件中的的值;具体使用如下:
@Value("${book.name}")
private String bookName;
@Value("${book.author}")
private String bookAuthor;
@Data
@ConfigurationProperties(prefix = "book")
public class Book {
private String name;
private String author;
private int age;
}
@ConfigurationProperties有两个属性
- prefix:指定properties的配置的前缀
- locations:指定properties文件的位置
可以看出两种方法适应不同非场合,单个属性值使用@value,多个同组使用 @ConfigurationProperties。但是在使用Nacos管理配置时,修改配置文件的值不能同步热更新,在这注解上修改即可实现:
- 通过 @Value 注入后,结合注解 @RefreshScope 刷新配置。
过程是在要调用这些变化的配置的类中,通过注解 @Value 找到在 nacos 中配置的属性,然后在调用这些属性的类上加上注解 @RefreshScope 实现配置的自动更新。
- 通过 @ConfigurationProperties 注入配置,同时配合 @Component
将配置交给spring管理生效,自动刷新。
重新定义一个方法或者类(该注解使用于类和方法),通过注解@ConfigurationProperties 的属性 prefix 绑定配置文件中的配置,相当于捕捉到外部的配置信息,@Component 注解实现把配置交给 spring 管理,实现配置文件的自动刷新
|