当前位置: 首页 > news >正文

深圳哪个网站好推广一点深圳全网推广排名

深圳哪个网站好推广一点,深圳全网推广排名,域名解析网站建设,北京到广州航班时刻表(给ImportNew加星标,提高Java技能)转自:小姐姐味道虽然现在springboot提供了多环境的支持,但是通常修改一下配置文件,都需要重新打包。在开发springboot框架集成时,我遇到一个问题,就是如何让PropertySourc…

(给ImportNew加星标,提高Java技能)

转自:小姐姐味道

虽然现在springboot提供了多环境的支持,但是通常修改一下配置文件,都需要重新打包。

在开发springboot框架集成时,我遇到一个问题,就是如何让@PropertySource能够“扫描”和加载jar包外面的properties文件。

这样,我就可以随时随地的修改配置文件,不需要重新打包。

最粗暴的方式,就是用—classpath指定这些文件。但是这引入了其他问题,“易于部署”、“与容器无关”,让人棘手。而且这个问题在测试环境、多机房部署、以及与配置中心协作时还是很难巧妙解决,因为这里面涉及到不少的硬性规范、甚至沟通成本。

回到技术的本质,我希望基于spring容器,开发一个兼容性套件,能够扫描jar外部的properties文件,考虑到实施便捷性,我们约定这些properties文件总是位于jar文件的临近目录中。

设计前提

1、文件目录

文件目录就类似于下面的样式。可以看到配置文件是和jar包平行的。

----application.jar  (springboot项目,jarLaucher)
|
| sample.properties
| config/
|
| sample.properties

2、扫描策略(涉及到覆盖优先级问题)

  1. 我们约定默认配置文件目录为config,也就是最优先的。其余application.jar同级;相对路径起始位置为jar路径。

  2. 首先查找./config/sample.properties文件是否存在,如果存在则加载。

  3. 查找./sample.properties文件是否存在,如果存在则加载。

  4. 否则,使用classpath加载此文件。

3、开发策略

  1. 尽可能使用spring机制,即Resource加载机制,而不适用本地文件或者部署脚本干预等。

  2. 通过研究,扩展自定义的ResourceLoader可以达成此目标,但是潜在风险很高,因为springboot、cloud框架内部,对各种Context的支持都有各自的ResourceLoader实现,如果我们再扩展自己的loader会不会导致某些未知问题?于是放弃了此策略。

  3. spring提供了ProtocolResolver机制,用于匹配自定义的文件schema来加载文件;而且不干扰ResourceLoader的机制,最重要的是它会添加到spring环境下的所有的loader中。我们只需要扩展一个ProtocolResolver类,并将它在合适的实际加入到ResourceLoader即可,此后加载properties文件时我们的ProtocolResolver总会被执行。

代码

下面是具体的代码实现。最主要的,就是配置文件解析器的编写。注释很详细,就不多做介绍了。

1、XPathProtocolResolver.java

import org.springframework.core.io.ProtocolResolver;

2、ResourceLoaderPostProcessor.java

import org.springframework.context.ApplicationContextInitializer;

加上spring.factories,我们越来越像是在做一个starter了。没错,就是要做一个。

3、spring.factories

org.springframework.context.ApplicationContextInitializer=\
com.github.xjjdog.commons.spring.io.ResourceLoaderPostProcessor

PropertyConfiguration.java (springboot环境下,properties加载器)

@Configuration
@PropertySources(
{
@PropertySource("*:login.properties"),
@PropertySource("*:ldap.properties")
}
)
public class PropertyConfiguration {

@Bean
@ConfigurationProperties(prefix = "login")
public LoginProperties loginProperties() {
return new LoginProperties();
}

@Bean
@ConfigurationProperties(prefix = "ldap")
public LdapProperties ldapProperties() {
return new LdapProperties();
}
}

这样,我们的自定义加载器就完成了。我们也为SpringBoot组件,增加了新的功能。

End

SpringBoot通过设置”spring.profiles.active”可以指定不同的环境,但是需求总是多变的。比如本文的配置需求,可能就是某个公司蛋疼的约定。

SpringBoot提供了多种扩展方式来支持这些自定义的操作,这也是魅力所在。没有什么,不是开发一个spring boot starter不能解决的。

推荐阅读  点击标题可跳转

Spring Boot面试问题集锦

SpringBoot 并发登录人数控制

Springboot 优雅停止服务的几种方法

看完本文有收获?请转发分享给更多人

关注「ImportNew」,提升Java技能

91d77bc2264e0b9edbbfb29e6ea075e3.png

好文章,我在看❤️

http://www.lbrq.cn/news/2491543.html

相关文章:

  • 在网站做推广要钱吗最新疫情最新消息
  • 怎么查看网站的建设时间最新网络营销方式
  • wordpress网站例企业官方网站推广
  • 深圳企业社保网站官网百度指数怎么看城市
  • 天津网站建设揭秘登录百度
  • 网站怎样做https百度笔记排名优化
  • 吕梁网站建设seo和sem
  • 郑州的网站建设公司哪家好百度关键词点击价格查询
  • 南宁网站排名优化电话免费网站注册免费创建网站
  • 网站建设在线商城seo优化人员
  • 龙华网站制作公司如何开展网络营销活动
  • 请列出页面上影响网站排名的因素网站开发建站
  • 中国建设网银seo做得比较好的企业案例
  • 成都旅游网站建设规划方案找客户资源的软件
  • 开网站的宣传图片怎么做sem和seo哪个工作好
  • 怎样做网站管理与维护广州seo优化公司排名
  • 企业网站建设实训建议网站产品推广
  • 网站架构 seo网络广告策划书
  • 租服务器做网站简述影响关键词优化的因素
  • 漕泾网站建设培训机构seo
  • 湘潭网站建设建站海外独立站
  • 设计网站免费的今日冯站长之家
  • wordpress 插件制作教程全网营销与seo
  • 做网站 想做成宽屏的自己建网站流程
  • 专做定制网站建设seo营销专员
  • 无需登录网页小游戏网站seo推广主要做什么
  • 临海网站建设关键字优化
  • 网站建设公司怎么发展seo关键词推广渠道
  • 企业网站建设的过程企业网站推广外包
  • 哪个网站可以做申论真题html家乡网站设计
  • [电网备考]计算机组成与原理
  • LeetCode 239:滑动窗口最大值
  • 低精度训练一:低精度训练介绍与大模型下载
  • java开闭原则 open-closed principle
  • 自由学习记录(74)
  • URL与URI:互联网世界的“门牌号“与“身份证“