美文网首页
Spring Boot 进阶系列(二) 配置文件

Spring Boot 进阶系列(二) 配置文件

作者: 回文体文回 | 来源:发表于2019-07-21 14:28 被阅读0次

    文章使用版本为 Spring Boot 2.1.x

    对应入门系列 Spring Boot 入门系列(二) 配置文件

    配置自定义参数

    在入门文章中我们配置了如下配置:

    someone:
      name: 张三
      age: 20
      best-friend: 李四
    

    并且介绍了如何使用自定义的配置,一种是使用 @Value 注入到属性中:

        @Value("${someone.name}")
        private String name;
    
        @Value("${someone.age}")
        private String age;
    
        @Value("${someone.best-friend}")
        private String bestFriend;
    

    另外一种是通过 @ConfigurationProperties 注入到 Bean 中:

    @ConfigurationProperties(prefix = "someone")
    @Component
    @Data
    public class Someone {
    
        private String name;
    
        private Integer age;
    
        private String bestFriend;
    }
    

    除了上面的方式,其实还有其他的方式把自定义参数注入到 Bean 中,下面我们一起看看吧。

    第二种方式 使用 @EnableConfigurationProperties

    我们现在新建一个类 Someone2,它与 Someone 其实是一样的,不过它没有 @Component 注解,如果只是这样的话,Someone2 是不会被注入属性的,这是因为只有 Bean 被 Spring 管理起来才会注入属性。

    @ConfigurationProperties(prefix = "someone")
    @Data
    public class Someone2 {
    
        private String name;
    
        private Integer age;
    
        private String bestFriend;
    }
    

    这个时候很简单,我们只要把 Someone2 声明为 Spring Bean 就可以了,比如:

        @Bean
        public Someone2 someone2() {
            return new Someone2();
        }
    

    这里我们也可以使用 @EnableConfigurationProperties,它的作用就是把注解有 @ConfigurationProperties 的 Bean 注入到 Spring 中:

    @Configuration
    @EnableConfigurationProperties({Someone2.class})
    public class Config {
    }
    

    第三种方式 使用 @Bean + @ConfigurationProperties

    上面的方式都要求 Bean 上有 @ConfigurationProperties 注解,如果某个 Bean 是由框架提供,又没有 @ConfigurationProperties 注解怎么办呢?

    @Data
    public class Someone3 {
    
        private String name;
    
        private Integer age;
    
        private String bestFriend;
    
    }
    

    其实也是可以注入的,只要我们在声明 Bean 的时候再加上 @ConfigurationProperties 注解就可以了。

        @Bean
        @ConfigurationProperties(prefix = "someone")
        public Someone3 someone3() {
            return new Someone3();
        }
    

    相关文章

      网友评论

          本文标题:Spring Boot 进阶系列(二) 配置文件

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