美文网首页
SpringBoot自定义配置的正确使用姿势

SpringBoot自定义配置的正确使用姿势

作者: 千淘萬漉 | 来源:发表于2019-10-22 21:30 被阅读0次

    Springboot中把配置文件的键值读取到程序中的方法有很多,以前常用@Value或者@Envrionment形式去获取,如果参数简便也可以满足需求,但是并不推荐这样的做法,属性装配的时候采用@ConfigurationProperties 配置形式可以实现松散绑定,同时还能在配置注入容器时进行数据校验,功能更为强大灵活。步骤主要三步:

    1.引入MAVEN依赖

    • 添加spring-boot-configuration-processor,可以在编译时生成属性元数据(spring-configuration-metadata.json)。
    • 添加lombok,可以方便使用注释处理器的功能省去Pojo定义中get set这些麻烦工作。
        <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-configuration-processor</artifactId>
          <optional>true</optional>
        </dependency>
    

    2.属性绑定

    定义好Bean类对象与配置的映射关系,比如我这里有一个容器线程池参数配置属性类,可以设定默认值

    @Data
    @ConfigurationProperties(prefix="excutor")
    public class ExcutorProperties {
        private int corePoolSize = 5;
        private int maxPoolSize = 10;
        private int queueCapacity = 64;
    }
    

    同时在yml或者properties配置文件中配置相应的键值,松散绑定即可,容器会优先读取配置文件中配置值,覆盖属性上的默认值:

    excutor:
      core-pool-size: 6
      max-pool-size: 20
      queueCapacity: 100
    

    3.容器注入

    主要有三种方式:

    • 配合@Component注解直接进行注入,这种方式简单直观
    @Data
    @Component
    @ConfigurationProperties(prefix="excutor")
    public class ExcutorProperties {
    
    • 使用@EnableConfigurationProperties,通常配置在标有@Configuration的类上,当然其他@Component注解的派生类也可以,不过不推荐。
    • 使用@Bean方式在标有@Configuration的类进行注入,这种方式通常可以用在对第三方类进行配置属性注册
    @Configuration
    public class ExcutorConfiguration {
        @Bean
        public ExcutorProperties excutorProperties() {
            return new ExcutorProperties();
        }
    }
    

    完成注入以后,即可在Spring容器中使用该配置对象的值。

    source: Spring Boot 2.0 @ConfigurationProperties 使用

    相关文章

      网友评论

          本文标题:SpringBoot自定义配置的正确使用姿势

          本文链接:https://www.haomeiwen.com/subject/bimfvctx.html