1 简介
前面我们用一篇文章《【Spring】只想用一篇文章记录@Value的使用,不想再找其它了(附思维导图)》
详细讲解了在Spring中如何使用@Value
来实现我们对配置的需求,它功能强大、使用方便。但它也是有它的局限性的,比如对于邮件服务,我们配置有:
mail.hostname=smtp.qq.com
mail.username=larry@qq.com
mail.password=123456
mail.to=to@163.com
mail.cc=cc@gmail.com
使用@Value
,我们需要5个注解及5个独立的变量:
@Value("${mail.hostname}")
private String hostname;
@Value("${mail.username}")
private String username;
@Value("${mail.password}")
private String password;
@Value("${mail.to}")
private List<String> to;
@Value("${mail.cc}")
private List<String> cc;
这样非常不方便,容易出错,较难维护,不好传递。如果能把相同功能的配置组合起来,那配置就不会这么乱了。而Springboot
为我们提供了注解@ConfigurationProperties
完美解决了这个问题。现在我们来深入了解一下这个注解的强大之处。
2 启动注解的三种方式
启动@ConfigurationProperties
有三种方式,分别是:
(1)属性类@ConfigurationProperties
属性类@Component
@Component
@ConfigurationProperties(prefix = "pkslow")
public class PkslowProperties {
private String name;
private List<String> emails;
private Map<String, Integer> price;
//getter and setter
}
在属性配置类上加注解@ConfigurationProperties
是三种方式都需要的,第一种方式通过@Component
声明为一个可用的Bean。实际不一定是@Component
,@Service
等也是可以的。
(2)属性类@ConfigurationProperties
配置类@Bean
在配置类中通过@Bean
声明:
@Configuration
public class