@ConfigurationProperties使用中遇到的问题

用Spingboot 的小伙伴一定用过@ConfigurationProperties 注解。这个注解的作用就是将properties 或这yml中配置的参数 值根据key 注入到配置类(Java Bean) 中, 然后用@Autowried 在业务类中注入配置类,就可以获取配置文件中参数信息了,真的很方便。

@ConfigurationProperties 注解可以加在 配置类上或者加在 方法上,本文说下配置类上的使用方法。

1.pom文件引入依赖

<dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-configuration-processor</artifactId>

        <optional>true</optional>

</dependency>
  1. 在properties 或 yml文件中 配置 参数 信息, 这里我就不沾代码了,截图看起来方便点。
    image

3.创建配置类BookConfigBean.class,加@ConfigurationProperties(prefix ="book") 注解, prefix= "book" 一定要和配置类保持一致,配置类中属性名和配置信息中key 保持一致。并且使用lombok 工具中@Data注解自动生成get/set方法 ,如下:
image

4.在启动类中加入@EnableConfigurationProperties(BookConfigBean.class) 注解,如下
image

5.在测试类TestController 中注入BookConfigBean ,获取参数信息。
image

6.访问http://localhost:8080/test2, web页面查看配置信息
image

7.遇到的问题及总结:

第一,启动类未加@EnableConfigurationProperties(BookConfigBean.class) 注解, spring 会扫描不到配置类,报未扫描到配置类错误。

image

这个问题还可以在配置类BeanConfigBean 上加 @Component注解,标注配置类为javabean 交由spring管理。

第二,配置类BookConfigBean 未写get/ set 方法 , 会出现配置类能被spring 扫描到, 但值无法注入问题。从这点可以理解 , spring 是通过get/set 或 构造函数给类实例注入属性值。

本例我使用了,lombok工具中@Data 注解, 自动生成get/set 方法。

第三,使用@Value 注解也可以获取配置文件的配置信息,这两个注解各有自己的优点。

posted @ 2023-01-12 15:10  又一岁荣枯  阅读(483)  评论(0编辑  收藏  举报