车车的Springboot学习日记(二)——配置文件的编写

58 阅读1分钟

参考资料

源自于xkcoding/spring-boot-demo: 🚀一个用来深入学习并实战 Spring Boot 的项目。 (github.com)这个的启发。

本章学习

  1. 配置文件的自定义配置
  2. 多环境下配置信息的获取

项目结构

image.png

  • 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对象。

image.png 可以看到创建的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注解一样。

总结

通过这个案例主要学会了如何调用相应配置文件中的属性值。并且在创建对象中如何自动将这些常量进行注入至对象。