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

2019-07-21  本文已影响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();
    }
上一篇下一篇

猜你喜欢

热点阅读