网站首页 > 开源技术 正文
来这个公司接手的这个项目,虽然使用的是springboot 而且版本比较低,最要命的一点就是只能打成war包(历史原因,不做多说),结果导致每次在各个环境打包 还得先在本地先修改好配置文件,再部署到相应环境上去,很是麻烦。那么我们能不能在指定环境上放置一份配置文件,让应用启动时就读取本地的这个文件呢,其实是可以的。springboot可以使用xml或者@ImportResource 来帮我们加载配置文件,但是呢这个有个限制,必须是本地的,而且格式也有限制,properties或者yml。那么我们如果要从远程读配置文件呢,也许有人会说用配置中心呀。只是,接入配置中心又会引发一堆改造,暂时不想改那么多。那么我们究竟如何加载远程的配置呢?
第一种:
通过EnvironmentPostProcessor接口把我们自己的配置读取过来
这里通过系统环境变量配置了环境上的物理文件当做配置文件,同时我们需要在META-INF/spring.factories中配置
org.springframework.boot.env.EnvironmentPostProcessor=com.jspxcms.core.MyEnvironmentPropertySource
第二种,参照springcloud的做法,相对来说比较复杂一点 ,但也只需简单三步
1.编写PropertySource
这里我们实现一个类MyPropertySource并继承EnumerablePropertySource 我们使用Map存储我们的配置
2.编写PropertySourceLocator
PropertySourceLocator就是用来帮助我们定位我们前面的MyPropertySource,实现的方法只有一个。
public class MyPropertySourceLocator implements PropertySourceLocator {
@Override
public PropertySource<?> locate(Environment environment) {
Map<String,String> properties = new HashMap<>();
properties.put("myPro","test");
MyPropertySource myPropertySource = new MyPropertySource("myPropertySource",properties);
return myPropertySource;
}
}
3.激活MyPropertySourceLocator
这个没啥好说的 在启动类或者配置类种加入如下:
@Bean
public MyPropertySourceLocator myPropertySourceLocator(){
return new MyPropertySourceLocator();
}
最后我们同样需要在META-INF/spring.factories中配置
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.lizo.MyConfigBootstrapConfiguration
这样我们就能成功的读取远程的配置啦。
ps:后面发现nacos的client也是基于PropertySourceLocator做的,
猜你喜欢
- 2024-11-06 JVM性能调优(2)——垃圾回收器和回收策略
- 2024-11-06 网站安全渗透测试服务内容详情(网站渗透测试包括)
- 2024-11-06 泰国重要经贸网站(泰国经济贸易)
- 2024-11-06 如何快速查看自己的网站是否被入侵
- 2024-11-06 动态网站和静态网站二者区别在哪里?
- 2024-11-06 基于SpringBoot 的CMS系统,拿去开发企业官网真香(附源码)
- 2024-11-06 系列教材JAVA+J2SE+JSP+SSH+javaWEB+框架+CMS+SQL 免费教材分享
- 2024-11-06 “OWASP Top 10 2017”之外常见漏洞的代码审计
- 2024-11-06 最新信息安全漏洞整理-woocommerce 插件 SQL注入漏洞
- 2024-11-06 实战剖析内网域渗透(上)(内网渗透可以用来干嘛)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)