记录下几种注解读取SpringBoot配置文件的方式
1、要获取application.properties指定配置key的值时,可以通过为属性注解@Value("${配置key}")方式获取,如下:
@Configuration
public class Config {
@Value("${config.id}")
private String configId;
@Value("${config.name}")
private String configName;
public String getConfigId() {
return configId;
}
public String getConfigName() {
return configName;
}
}
2、当application.properties里的配置有前缀相同的时候,可以通过为配置类注解@ConfigurationProperties(prefix = "前缀")指定前缀的方式获取,注意需要提供setter方法,如下:
@Configuration
@ConfigurationProperties(prefix = "config2") // 需要setter方法
public class Config2 {
private String id; // 配置文件中的key:config2.id
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3、如果需要读取指定配置文件的配置时,可以通过为配置类注解@PropertySource(value = "配置文件名称或者路径")的方式来指定,如下:
@Configuration
@PropertySource(value = "config.properties") // 指定resources下的配置文件名,或者路径
@ConfigurationProperties(prefix = "config3") // 需要setter方法
public class Config3 {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4、最后也可以通过spring提供的org.springframework.core.env.Environment配置上下文(配置文件的获取工具)来获取,注解@Autowired注入Environment后,通过它的getProperty("配置key")获取,如下:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
private Config config;
@Autowired
private Config2 config2;
@Autowired
private Config3 config3;
@Autowired
private Environment environment;
@PostConstruct // 构造方法之后调用
public void showTheWayReadProperties() {
System.out.println("通过Environment读取配置:");
System.out.println(environment.getProperty("config.id") + "-" + environment.getProperty("config.name"));
System.out.println("通过@Value(指定配置key全名称)方式读取配置:");
System.out.println(config.getConfigId() + "-" + config.getConfigName());
System.out.println("通过@ConfigurationProperties(指定前缀)方式读取配置:");
System.out.println(config2.getId() + "-" + config2.getName());
System.out.println("通过@PropertySource(指定配置文件)方式读指定配置:");
System.out.println(config3.getId() + "-" + config3.getName());
}
}
运行效果如下: