参考资料
源自于xkcoding/spring-boot-demo: 🚀一个用来深入学习并实战 Spring Boot 的项目。 (github.com)这个的启发。
本章学习
- 配置文件的自定义配置
- 多环境下配置信息的获取
项目结构
- controller :存储着是网络访问接口
- property : 存储着是属性
- resource/META-INF:存储的配置属性信息
- application-{}:不同环境的文件配置信息
访问接口的编写
@RestController
public class PropertyController {
private final ApplicationProperty applicationProperty;
private final DeveloperProperty developerProperty;
@Autowired
public PropertyController(ApplicationProperty applicationProperty, DeveloperProperty developerProperty) {
this.applicationProperty = applicationProperty;
this.developerProperty = developerProperty;
}
@GetMapping("/property")
public Dict index() {
return Dict.create().set("applicationProperty", applicationProperty).set("developerProperty", developerProperty);
}
}
- ApplicationProperty/DeveloperProperty:记录不同环境信息
- @Autowired:自动注入,也就是让springboot进行new一个对象
- Dict:创建一个json对象,将返回值转化为json对象。
可以看到创建的json对象,在自动注入的时候已经进行赋值了。赋值为application.yml中的属性值。
DeveloperProperty编写
@Data
@ConfigurationProperties(prefix = "developer")
@Component
public class DeveloperProperty {
private String name;
private String website;
private String qq;
private String phoneNumber;
}
这里出现了@ConfigurationProperties(prefix = "developer")这个注解配置,也是其配置属性指定使用apllication-dev.yml编写的属性。在自动注入的时候,会去配置文件进行访问相应的属性字段然后进行赋值到相应的字段。
ApplicationProperty编写
@Data
@Component
public class ApplicationProperty {
@Value("${application.name}")
private String name;
@Value("${application.version}")
private String version;
}
@Value("${application.name}")也就是指定application.yml的name。然后自动注入的过程就像使用 @ConfigurationProperties注解一样。
总结
通过这个案例主要学会了如何调用相应配置文件中的属性值。并且在创建对象中如何自动将这些常量进行注入至对象。