springboot 配置注入,环境变量读取
前提
配置文件一般是值resources目录下的application.properties或application.yml,其中保存着配置信息
代码中实现配置注入的方法
- 使用@Value注解
@Value("${test.msg}")
@RestController
public class WebController {
@Value("${test.msg}")
private String msg;
@RequestMapping(value = "index", method = RequestMethod.GET)
public String index() {
return "The Way 1 : " +msg;
}
}
- 使用spring boot的Environment对象
env.getProperty("test.msg")
@RestController
public class WebController {
@Autowired
private Environment env;
@RequestMapping(value = "index2", method = RequestMethod.GET)
public String index2() {
return "The Way 2 : " + env.getProperty("test.msg");
}
}
- 使用java bean 注入
@Component
@ConfigurationProperties(prefix="people")
@Data
public class People {
private String name;
private Integer age;
}
//然后在需要使用的地方使用@Autowired注入
@Autowired
private People me;
- 为了不破坏核心文件的原生态,但又需要有自定义的配置信息存在,一般情况下会选择自定义配置文件来放这些自定义信息
这里在resources/config目录下创建配置文件my-web.properties
使用@Component和 @ConfigurationProperties来转换为java bean对象注入
@ConfigurationProperties(locations = "classpath:config/my-web.properties", prefix = "web")
@Component
@Data
public class MyWebConfig {
private String name;
private String version;
private String author;
}
在需要使用的地方使用@Autowired注解注入、
5.在docker环境中,application.properties或application.yml读取环境变量
name: ${M2_HOME:abc} #首先取环境变量M2_HOME,如果环境变量中没有,就取abc这个固定值