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

spring boot自定义配置源操作步骤

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

这篇文章主要介绍了spring boot自定义配置源操作步骤,需要的朋友可以参考下

概述

我们知道,在Spring boot中可以通过xml或者@ImportResource 来引入自己的配置文件,但是这里有个限制,必须是本地,而且格式只能是 properties(或者 yaml)。那么,如果我们有远程配置,如何把他引入进来来呢。

如何做

其实自定义配置源只需要3步

第一步,编写PropertySource

编写一个类继承EnumerablePropertySource,然后实现它的抽象方法即可,抽象方法看名字就知道作用,简单起见,这里使用一个map来保存配置,例如:

 public class MyPropertySource extends EnumerablePropertySource<Map> { public MyPropertySource(String name, Map source) { super(name, source); } //获取所有的配置名字 @Override public String[] getPropertyNames() { return source.keySet().toArray(new String[source.size()]); } //根据配置返回对应的属性 @Override public Object getProperty(String name) { return source.get(name); } }

第二步,编写PropertySourceLocator

PropertySourceLocator 其实就是用来定位我们前面的PropertySource,需要重写的方法只有一个,就是返回一个PropertySource对象,例如,

 public class MyPropertySourceLocator implements PropertySourceLocator { @Override public PropertySource locate(Environment environment) { //简单起见,这里直接创建一个map,你可以在这里写从哪里获取配置信息。 Map properties = new HashMap(); properties.put("myName","l<span style="color:transparent">来源gaodai#ma#com搞*!代#%^码网</span>izo"); MyPropertySource myPropertySource = new MyPropertySource("myPropertySource",properties); return myPropertySource; } }

第三步,让PropertySourceLocator生效

新建一个配置类,例如

 @Configuration public class MyConfigBootstrapConfiguration { @Bean public MyPropertySourceLocator myPropertySourceLocator(){ return new MyPropertySourceLocator(); } }

最后再创建/更新 META-INFO/spring.factories(如果做过自定义Spring boot开发的都知道这个文件)

 org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.lizo.MyConfigBootstrapConfiguration

简单来说就是给Spring Boot说,这个是一个启动配置类(一种优先级很高的配置类)。

编写测试

测试一

 @SpringBootApplication public class Test2 { public static void main(String[] args) throws SQLException { ConfigurableApplicationContext run = SpringApplication.run(Test2.class, args); Ser bean = run.getBean(Ser.class); System.out.println(bean.getMyName()); } @Component public static class Ser{ @Value("${myName}") private String myName; public String getMyName() { return myName; } public void setMyName(String myName) { this.myName = myName; } } }

正确输出

测试二

我们在application配置文件中,引入这个变量呢,例如在application.properties中

 my.name=${myName}

同样,结果也是能够生效的

myName就是上面在PropertySourceLocator中写进去的配置属性。运行程序,可以看见确实是可以正确输出。

小结

上面只是抛砖引玉,这样无论是哪里的数据源,都可以通过这种方式编写,把配置交给Spring 管理。这样再也不怕在本地配置文件中出现敏感信息啦,再也不怕修改配置文件需要登录每一个机器修改啦。

以上就是spring boot自定义配置源操作步骤的详细内容,更多请关注gaodaima搞代码网其它相关文章!


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

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

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

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

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