SpringBoot注解读取配置文件的方式

2,061 阅读1分钟

一、@Value读取application.properties配置文件中的值

application.properties配置文件

fileName=configName

PropertiesConfig类文件

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class PropertiesConfig {
  	//通过@Value注解读取fileName的值
    @Value("${fileName}")
    private String fileName;

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
}

测试

import com.model.PropertiesConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class PropertiesConfigTest {
    @Autowired
    private PropertiesConfig propertiesConfig;
    @Test
    public void test(){
        System.out.println(propertiesConfig.getFileName());//结果输出:configName
        assert "configName".equals(propertiesConfig.getFileName());
    }
}

二、@ConfigurationProperties读取多个application.properties配置文件中的值

application.properties文件

database.username=root
database.password=root

DatabaseConfig类文件

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties("database")
public class DatabaseConfig {
    private String userName;
    private String passWord;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

测试

import com.model.DatabaseConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DatabaseConfigTest {
    @Autowired
    private DatabaseConfig databaseConfig;
    @Test
    public void test(){
        System.out.println("username = " + databaseConfig.getUserName() +", password = "+databaseConfig.getPassWord());//结果输出:username = root, password = root
        assert "root".equals(databaseConfig.getUserName());
        assert "root".equals(databaseConfig.getPassWord());
    }
}

三、@PropertySource读取任意配置文件

新建property-source.properties配置文件

fileName=configName
database.username=root
database.password=root

PropertySourceConfig类文件

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@PropertySource(value = {"classpath:property-source.properties"})
@ConfigurationProperties("database")
public class PropertySourceConfig {
    @Value("${fileName}")
    private String fileName;
    private String userName;
    private String passWord;

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

测试

import com.model.PropertySourceConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class PropertySourceConfigTest {

    @Autowired
    private PropertySourceConfig propertySourceConfig;

    @Test
    public void test(){
        assert "configName".equals(propertySourceConfig.getFileName());
        System.out.println("fileName = " + propertySourceConfig.getFileName());//结果输出:configName
        assert "root".equals(propertySourceConfig.getUserName());
        System.out.println(propertySourceConfig.getUserName());//结果输出:root
        assert "root".equals(propertySourceConfig.getPassWord());
        System.out.println(propertySourceConfig.getPassWord());//结果输出:root
    }
}

完整代码链接:read-config-file项目地址