这篇文章主要介绍“Spring外部化配置的方法有哪些”,在日常操作中,相信很多人在Spring外部化配置的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring外部化配置的方法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
目录
正文
Envrionment 获取外部配置
@Log4j2
@SpringBootApplication
public class ConfigurationApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigurationApplication.class, args);
}
@Bean
ApplicationRunner applicationRunner(Environment environment){
return args -> {
log.info("user.name : {}",environment.getProperty("user.name"));
};
}
}
修改Spring默认配置文件名称
启动程序参数中加入如下配置:
--spring.config.name=app
Value注解配置来源
配置文件
@Bean
ApplicationRunner applicationRunner(Environment environment,
@Value("${greeting.message:hello boy}") String message){
return args -> {
log.info("from application.properties user.name : {}",environment.getProperty("user.name"));
log.info("from application.properties greeting.message : {}",message);
};
}
默认值
value注解通过冒号来配置默认值:
@Value("${greeting.message:hello boy}")
获取环境变量值
获取程序参数值
外部化配置文件优先级问题
如果有application.properties在springboot 启动jar包同一目录,会优先读取这个文件中的配置。
Autowire注入ConfigurableEnvrionment
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(ConfigurationApplication.class)
.run(args);
}
@Autowired
void getConfigurableEnvrionment(ConfigurableEnvironment environment) {
environment.getPropertySources().addLast(new MyPropertySource());
}
ApplicationInitialiazer 配置
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(ConfigurationApplication.class)
.initializers(applicationContext ->
applicationContext.getEnvironment().getPropertySources().addLast(new MyPropertySource()))
.run(args);
}
static class MyPropertySource extends PropertySource<String>{
public MyPropertySource() {
super("myproperty");
}
@Override
public Object getProperty(String name) {
if(name.equalsIgnoreCase("author-name")){
return "john";
}
return null;
}
}
然后通过@Value注解注入获取author-name:
@Bean
ApplicationRunner applicationRunner(Environment environment,
@Value("${greeting.message:hello boy}") String message,
@Value("${author-name}") String name){
return args -> {
log.info("from application.properties user.name : {}",environment.getProperty("user.name"));
log.info("from application.properties author.name : {}",name);
};
}
到此,关于“Spring外部化配置的方法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注天达云网站,小编会继续努力为大家带来更多实用的文章!