背景
@ConfigurationProperties
和 @Value
都是 Spring 提供的用于从配置文件注入配置信息的方式,不同的是@Value比较适合配置少的场景,当配置多的时候,每次写@Value会显得很麻烦,所以用@ConfigurationProperties来处理配置多的情形
@value的配置
application.properties配置文件中
1 2
| user.name=pjmike user.age=21
|
实体类中
1 2 3 4 5 6 7 8
| @Data public class User { private Long id; @Value("${user.name}") private String name; @Value("${user.age") private int age; }
|
直接在参数上添加@Value注解即可
@ConfigurationProperties配置
1 2 3 4 5 6 7
| @Component @ConfigurationProperties(prefix = "user") public class User { private Long id; private String name; private int age; }
|
1 2 3 4 5 6 7 8 9 10
|
@SpringBootApplication @EnableConfigurationProperties(User.class) public class Chapter2Application {
public static void main(String[] args) { SpringApplication.run(Chapter2Application.class, args); } }
|
1 2
| user.name=pjmike user.age=21
|
以上代码就可实现@ConfigurationProperties对属性的绑定操作
注意:
- 在
@EnableConfigurationProperties
注解中列出要注册的属性类
@PropertySource注解
@PropertySource注解可以从properties文件中,获取对应的key-value值,将其赋予变量.
它可以和@value和@ConfigurationProperties配合使用。通过该注解可以指定某一个properties配置文件,而不是默认的application.properties文件
1 2 3 4 5 6 7 8 9
| @Data @PropertySource("classpath:user.properties") public class User { private Long id; @Value("${user.name}") private String name; @Value("${user.age") private int age; }
|
添加参数验证
@ConfigurationProperties
是可以和 validation 注解一起使用的
1 2 3 4 5 6 7 8
| @Component @ConfigurationProperties(prefix = "user") public class User { private Long id; @NotBlank private String name; private int age; }
|