首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >spring-配置文件外化

spring-配置文件外化

作者头像
逍遥壮士
发布于 2020-09-18 11:42:24
发布于 2020-09-18 11:42:24
9380
举报
文章被收录于专栏:技术趋势技术趋势

什么配置文件外化?

配置文件外化指的是将类型于数据库或者一些日志相关的配置文件移到项目之外,系统启动的时候通过jvm参数进行加载。

配置文件外化解决了什么问题?

配置文件外化主要解决的问题,就是当然配置文件中改了配置,不需要再重新打包,而只需要将配置文件通过git或者其他上传文上,上传到对就的服务器,然后项目重启就可以了,有些不需要启动的实现就生效了,这样一来减少,因为耦合在项目中,需要每次打包。

实现方式:

公共配置

新增两个配置文件,放到D盘中,可以到项目中获取。

com.hong.spring.config.SystemInfo

代码语言:javascript
复制
package com.hong.spring.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Auther: csh
 * @Date: 2020/9/16 17:10
 * @Description:获取系统变量
 */
@Component
@Data
public class SystemInfo {
    @Value("${system.name}")
    private String systemName;
}

com.hong.spring.controller.IndexController#systemName

代码语言:javascript
复制
@RequestMapping(value = "systemName")
@ResponseBody
public String systemName(){
    return systemInfo.getSystemName();
}

配置文件内容如下:

systemConfig/spring_dev.properties

代码语言:javascript
复制
system.name=dev

‍

systemConfig/spring_idc.properties

代码语言:javascript
复制
system.name=idc

在windows上实现服务配置外化

dev配置测试

代码语言:javascript
复制
-Dconfig_env=dev -DsystemConfigPath=D:\config 

‍

测试dev在tomcat VM options加入以上,如图

idc配置测试

代码语言:javascript
复制
-Dconfig_env=idc -DsystemConfigPath=D:\config

测试idc在tomcat VM options加入以上,如图

结果

关于Linux系统上面的配置

同样是在java环境变量运行的时候添加如下,关于如何配置linux环境变量参照如下:

文章:https://www.cnblogs.com/youyoui/p/10680329.html

添加环境变量

然后将配置文件全部上传linux,启动项目的时候java -jar xxx -Dconfig_env=idc或-Dconfig_env=dev

结果

代码下载:https://gitee.com/hong99/spring/issues/I1N1DF

最后:

配置文件外化,在spring boot和spring cloud都是很好的支持,在spring cloud还有一个远程配置中心,但是对于传统spring springmvc 这种4.x或以下的,项目很多项目负责真的不清楚该如何支持,通过jvm方式完美的解决该问题,本文仅做参考有更多建议请留言或交流讨论。

参考文章:

https://segmentfault.com/a/1190000015069140

https://cloud.tencent.com/developer/article/1424283

https://juejin.im/post/6844903864534040584

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档