在开发过程中,我们时常需要在项目启动的时候就能获取到某一个类,这时我们只需要添加一个配置类即可,在这个配置类上面添加上@Configuration,加上这个注解后就可以将当前的这个类标注为一个配置类,那么在项目启动的时候就会直接去加载这个类。
并且我们还可以在配置类中直接去获取到yml配置文件中的数据,直接使用@Value("${xxxx.xxxx")即可。
直接上demo:
编写一个格式为yml的配置文件,内容如下:
server:
port: 9001
创建一个是实体类:
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
在启动类的同包下面创建名为BeanConfig的配置类,在这个配置类中来获取yml中的数据以及通过某一个方法来创建并返回我们需要的类:
@Configuration
public class BeanConfig {
@Value("${server.port}") //获取yml文件中配置的端口号
private Integer port;
@Bean //此注解非常的关键,意为创建一个该返回类型的对象
public User getInteger(){ //返回User对象
User user = new User();
user.setAge(port);
user.setName("xh");
return user;
}
}
基本工作准备完毕,下面我们编写一个测试的Controller来测试一波,即看能不能将配置类中返回的对象直接注入到controller中,以及看能不能在配置类中获取到yml文件中的数据:
@RestController
public class BeanController {
@Autowired
private User user;
@RequestMapping("getPort")
public User getPort(){
user.setName(user.getName()+"111111");
return user;
}
}
因为我们在配置类中已经将获取的端口号port字段作为了user对象的age,然后设置了user对象的name字段值为“xh”,如果能在controller中注入user对象,我们就将注入进来的user对象的name字段的name值拼接“11111”,那么最终返回的值应为{“name”:“xh111111”,“age”:9001}
下面我们就来访问接口测试一波:
数据正确,说明上面的配置类的方式是正确的
在这里记录一下,以防后面忘记了可以方便查阅