- @ConfigurationProperties中的前缀属性定义了哪些外部属性将绑定到类的字段上
参数 |
描述 |
prefix |
字段的前缀 |
ignoreUnknownFields |
是否忽略未找到的属性字段 |
ignoreInvalidFields |
是否忽略非法字段,默认false,当为true时,有无法转换的属性时忽略,不会报错,注入的值为空 |
- 根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配
- @EnableConfigurationProperties注解与@Component注解作用相似,当@EnableConfigurationProperties注解应用到你的@Configuration时, 任何被@ConfigurationProperties注解的beans将自动被Environment属性配置
参数 |
描述 |
value |
指定注册的类class,默认为{},即当前类 |
- 也就是说注册使用了@ConfigurationProperties注解的类可以使用 @Component 或 @EnableConfigurationProperties 注解注册类对象到容器中
注
@EnableConfigurationProperties也可以注解在其他类中,用value指定@ConfigurationProperties的类在特定方法中加入Environment
- 在application.properties中添加自定义属性
user.name=admin
user.password=123456
示例
- User.java
@Component
@ConfigurationProperties(prefix="user")
public class User{
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
- UserController.java
@RestController
public class UserController {
@Autowired
private User user;
@RequestMapping("/user")
public String getProperties() {
System.out.println("userName:" + user.userName);
System.out.println("password:" + user.password);
return "success";
}
}
解决Spring boot的提示问题
- 此提示表示建议导入配置处理器configuration-processor用于配置文件中的字段属性的自动补全
- 在pom.xml中加入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
|
- 为了不在Spring Boot将大量额外的配置处理器进行一并打包,造成性能下降,因此建议在打包插件中对配置处理器进行排除
<build> <plugins>
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
<configuration> <excludes> <exclude> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </exclude> </excludes> </configuration>
</plugins> </build> |
注
当开启lombok时,Spring Boot会自动在打包插件中对配置处理器进行排除