欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot配置类注解【@PropertySource和@ConfigurationProperties】

程序员文章站 2024-01-08 08:22:22
...

@PropertySource

@PropertySource将指定配置文件加载到spring容器中,但是不包括配置文件中属性的注入。
案例代码:
config.properties

spring.fut.username=fut
spring.fut.password=123456
spring.fut.age=18

FutConfigure.java

@ToString
@Data
@Configuration
@PropertySource(value = { "classpath:config.properties"}, ignoreResourceNotFound = true)
public class FutConfigure {

    @Value("${spring.fut.username}")
    private String username;
    @Value("${spring.fut.password}")
    private String password;
    @Value("${spring.fut.age}")
    private int age;

}

以上类有3个含义:

  1. FutConfigure的作用就是接收外部properties文件里属性的值。
  2. @PropertySource表明了它要将classpath路径下的config.properties加载到spring容器中。
  3. @Value表明它要将spring容器中对应key的值注入到FutConfigure类属性中。

有木有觉得使用起来很方便?两个注解就成功的将外部的properties文件加载到了内存中。并且被spring容器管理起来,这样任何地方想要使用它,都可以直接从spring容器中去获取。

下面思考下,如果FutConfigure属性超级多,那是不是我要不停地加上@Value呢?这就要使用到上次讲解的注解@ConfigurationProperties。

@ConfigurationProperties(再回顾下,加深印象)

@ConfigurationProperties的作用就是将配置文件里的属性值映射到被注解的类里面。显然,这个注解是类级别的。
案例代码:
FutConfigure.java

@ToString
@Data
@Configuration
@PropertySource(value = { "classpath:config.properties"}, ignoreResourceNotFound = true)
@ConfigurationProperties(prefix = "spring.fut")
public class FutConfigure {

//    @Value("${spring.fut.username}")
    private String username;
//    @Value("${spring.fut.password}")
    private String password;
//    @Value("${spring.fut.age}")
    private int age;

}

以上类有3个含义:

  1. FutConfigure的作用就是接收外部properties文件里属性的值。
  2. @PropertySource表明了它要将classpath路径下的config.properties加载到spring容器中。
  3. @ConfigurationProperties表明了它要将config.properties文件里以spring.fut开头的属性值注入到FutConfigure对应的属性当中。

@ConfigurationProperties和@Value,一个适用类级别的注入,一个适用属性和方法级别的注入。