spring 注解

 


1、@ConfigurationProperties 与 @Value 区别

(1)@Value 要写全路径

(2)@ConfigurationProperties 用了这个,并且指定 prefix, 那它的属性就能自动匹配了,不用再写 @Value 了

(3)@ConfigurationProperties 要用 @EnableConfigurationProperties

(4)为了使用 @ConfigurationProperties 需要在 spring boot application 上添加 EnableConfigurationProperties 的注解 (这个试了一下,不用貌似也没有大问题)

(5)@ConfigurationProperties 可以添加前缀,然后其属性就会按照变量的名称默认在 application.* 中寻找指定的变量。

(6)如果想要从其他配置文件获取配置内容,可以添加一个额外的注释 @PropertySource("classpath:xxx.yml")

(7)@ConfigurationProperties@Value 的一个重大区别在于它采用比较灵活的方式寻找配置。可以看到这里的配置可以是驼峰形式,也可以是下划线分割的,还可以是中横线分割的

(8)如果用了@ConfigurationProperties,并且也指定了 prefix, 这个时候,再用 @Value的话,它会以@Value的为准(即把它的配置当全路径去匹配,会忽略 prefix, 这个时候,就会找不到,或找错的情况)

 

@Data
@Configuration
@ConfigurationProperties(prefix = "oauth.biz")
public class BizConfig {

    // 这种会自动匹配 oauth.biz.namespace 
    private String namespace;

    // 这种它会按全路径去匹配,也是可以的
    @Value("${oauth.biz.bizLoginUrl}")
    private String bizLoginUrl;

    // 这个它是把 redirectUrl 当全路径去匹配,会找错或找不到,所以 @ConfigurationProperties 与 @Value 并不是共用的。
    @Value("${redirectUrl}")
    private String redirectUrl;
    
}

 

 


 

posted @ 2022-09-08 14:40  aaacarrot  阅读(18)  评论(0编辑  收藏  举报