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

一、@Value读取application.properties配置文件中的值
application.properties配置文件
1
fileName=configName
PropertiesConfig类文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
  }
}
测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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文件
1
2
database.username=root
database.password=root
DatabaseConfig类文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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;
  }
}
测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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配置文件
1
2
3
fileName=configName
database.username=root
database.password=root
PropertySourceConfig类文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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;
  }
}
测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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项目地址

到此这篇关于详解SpringBoot注解读取配置文件的方式的文章就介绍到这了

来源:https://www.icode9.com/content-4-852801.html

(0)

相关推荐