这里只作为笔记,记录自己对此注解实践过的一些使用:
场景:
现实的开发过程中,经常会遇到一些配置信息,开发或测试是一套,到了客户现场部署时,才能对一些内容进行确认修改,或者一些常量信息需要在不定周期内进行一些简单的变更,可能只是变更一个日期,或者变更一些值,怎样才能花费最小的代价去修改这些呢。
这里利用了@ConfigurationProperties注解,初始化yaml文件中的属性配置,即利用了yaml文件可以定义一个对象,然后将对象的值注入到配置类的特点进行处理。
使用步骤:
一、 在配置文件中定义需要定义的对象。如下:在application.yml中增加如下对象内容
#特点:可以注入到配置类中 给实体类赋值
user:
id: 11
name: 张三
age: 12
二、在后台代码中定义一个与配置文件中定义的对象的属性相对应的实体类
package com.xian.plantform.base.web.dto;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserDto {
private Integer id;
private String name;
private String password;
private String address;
private String email;
private Integer age;
private String phone;
private String remark;
private Integer sex;
@Override
public String toString() {
return "UserDto{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", address='" + address + '\'' +
", email='" + email + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
", remark='" + remark + '\'' +
", sex=" + sex +
'}';
}
}
注意:
- @Data 是lombox的注解,直接省去了自己写get set方法
- @Component 告诉springboot 当前这个类是作为其组件
- @ConfigurationProperties(prefix = "user") 注解告诉spring 在初始化当前组件时,属性与配置文件中的key值为user的对象的属性相对应,一一赋值
三、如何使用
@SpringBootTest
class PlantformApplicationTests {
@Autowired
private UserDto userDto;
@Test
void contextLoads() {
System.out.println(userDto);
}
}
如上,在使用类中(我这里直接在测试类里使用了)直接使用@Autowired注解进行告知,然后就可直接使用
附:
@ConfigurationProperties 的巧妙运用很多,在springboot的自动装配中大量使用了此注解,了解过源码的应该都知道。