Spring外部化配置的几种技巧分享
@Log4j2@SpringBootApplicationpublic 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=appValue注解配置来源
配置文件
@BeanApplicationRunner 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注入ConfigurableEnvrionmentpublic static void main(String[] args) {new SpringApplicationBuilder().sources(ConfigurationApplication.class).run(args);}@Autowiredvoid 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外部化配置的资料请关注好吧啦网其它相关文章!
相关文章: