Spring外部化配置的几种技巧分享
更新时间:2021年06月21日 14:10:41 作者:johnwonder
在油管上看了龙之春的一个Spring tips 视频,讲述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的Environment抽象有很多值得学习的地方,期待下一期每日小技巧。
以上就是Spring外部化配置的几种技巧分享的详细内容,更多关于Spring外部化配置的资料请关注脚本之家其它相关文章!
相关文章
spring boot整合spring-kafka实现发送接收消息实例代码
这篇文章主要给大家介绍了关于spring-boot整合spring-kafka实现发送接收消息的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来看看吧。2017-06-06new出来的对象中无法使用@autowired进行对象bean注入问题
这篇文章主要介绍了基于new出来的对象中无法使用@autowired进行对象bean注入问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02
最新评论