Skip to content

ConfigurationClassPostProcessor 之 @PropertySource

加载指定的属性文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和 @ConfigurationProperties 使用。

  • @PropertySource 和 @Value 组合使用,可以将自定义属性文件中的属性变量值注入到当前类的使用@Value 注解的成员变量中。
  • @PropertySource 和 @ConfigurationProperties 组合使用,可以将属性文件与一个 Java 类绑定,将属性文件中的变量值注入到该 Java 类的成员变量中。

@PropertySource 和 @Value 组合使用

properties
test.name=Tom
java
package com.github.mengweijin.mybatisplus.demo.PropertySource;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Data
@Configuration
@PropertySource(value = "classpath:test.properties")
public class PropertySourceConfiguration {

    @Value("${test.name}")
    private String name;
}

测试

java
package com.github.mengweijin.mybatisplus.demo.PropertySource;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

@Slf4j
public class TestPropertySource {

    @Test
    public void test(){
        String basePackages = "com.github.mengweijin.mybatisplus.demo.PropertySource";
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(basePackages);
        PropertySourceConfiguration bean = context.getBean(PropertySourceConfiguration.class);
        Assertions.assertEquals("Tom", bean.getName());

        context.close();
    }
}

@PropertySource 和 @ConfigurationProperties 组合使用

java
@Data
@Configuration
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "test")
public class TestProperties {
    private String name;
}