• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Spring外部化配置的几种技巧分享

java 搞代码 4年前 (2022-01-05) 18次浏览 已收录 0个评论

在油管上看了龙之春的一个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 m<strong style="color:transparent">来源gaodai#ma#com搞@@代~&码*网</strong>essage){ 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{ 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外部化配置的几种技巧分享的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Spring外部化配置的几种技巧分享

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址