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

网友投稿 282 2022-10-18


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

目录正文Envrionment 获取外部配置修改Spring默认配置文件名称Value注解配置来源外部化配置文件优先级问题Autowire注入ConfigurableEnvrionmentApplicationInitialiazer 配置总结

正文

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{

publhttp://ic 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,

jViwT http:// @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外部化配置的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:东哥手把手带你刷二叉树(第三期)
下一篇:手把手带你刷二叉树(第二期)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~