根据环境自动切换配置文件的实现(web版)

关于web版不同环境切换配置的开发,写的不好的地方欢迎斧正。

1.配置环境变量作为切换的标志。(看个人,你也可以放在配置文件中)

        可以打开cmd,输入set查看环境变量是否生效。我是重启完才生效的。

1.1linux环境配置可通过命令配置:

                vi /etc/profile

                最下方加上:export  name = zhangsan;

                按ESC  输入wq

                输⼊命令  source   /etc/profile  刷新刚刚修改过的环境

 Web启动初始化配置

        

<!-- 配置文件初始化/刷新  mapping的url可用来刷新配置文件信息->
<servlet>
   <servlet-name>initServlet</servlet-name>
   <servlet-class>com....StartUpServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>initServlet</servlet-name>
   <url-pattern>/servlet/refreshContextConfig</url-pattern>
</servlet-mapping>

启动时初始化配置,propersUtil是我自己编写的获取方法

getEnvPath() 根据参数去获取不同的配置文件到静态的Properties变量里

 自定义刷新部分,通过url可在更改配置文件后实时刷新运行时的全局配置

 配置不同的配置文件

#test测试环境 
SVC_URL=http://233.233.233.233:5234/huafengcai/huafengcai
#local测试环境
SVC_URL=http://255.255.255.255:5434/huafengcai/huafengcai

代码使用时获取全局配置的方式:

String url = PropertiesUtil.SERVICEURL_PROP.getProperty("SVC_URL");

详细代码

StartUpServlet.java

package com.n...utils;

import org.apache.log4j.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StartUpServlet extends HttpServlet {
    public static Logger logger = Logger.getLogger(StartUpServlet.class);

    //初始化全局配置变量
    public void init() {
        CommonUtil commonUtil = new CommonUtil();
        //获取环境变量值。
        String envName = commonUtil.getEnvByName("FILE_TEST_NAME");
        PropertiesUtil.getEnvPath(envName);
    }

    public void destroy() {
    }

    //请求刷新全局配置变量
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response){
        String msg;
        CommonUtil commonUtil = new CommonUtil();
        //获取环境变量值。
        String envName = commonUtil.getEnvByName("FILE_TEST_NAME");
        msg = PropertiesUtil.getEnvPath(envName);
        if("success".equals(msg)){
            msg = "刷新全局配置变量成功";
        }else{
            msg = "刷新全局配置变量失败";
        }
        try{
            request.setAttribute("msg",msg);
            ServletContext sc = getServletContext();
            RequestDispatcher rd = sc.getRequestDispatcher("/flashSafeFilter.jsp"); //定向的页⾯
            rd.forward(request, response);
        }catch(Exception e){
            logger.info("刷新全局配置变量请求结果页面失败\n" + e);
        }

//不重跳转jsp,直接输出html界面
//        //设置HTTP响应的正文的MIME类型及字符编码
//        response.setContentType("text/html;charset=UTF-8");
//        /*输出HTML文档*/
//        PrintWriter out=response.getWriter();
//        out.println("<html><head><title>HelloServlet</title><head>");
//        out.println("<body>");
//        out.println(msg);
//        out.println("</body></html>");
//        System.out.println("before close():"+response.isCommitted());
//        out.close();
//        System.out.println("before close():"+response.isCommitted());

    }
}

PropertiesUtil.java

package com.newland.bi.sys.utils;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;


public class PropertiesUtil {
    public static Logger logger = Logger.getLogger(PropertiesUtil.class);
    public static Properties FILEPATH_PROP;
    public static Properties SERVICEURL_PROP;

    public static  String  getEnvPath(String fileSuffixName) {
        SERVICEURL_PROP = new Properties();
        FILEPATH_PROP = new Properties();
        String result = "success";
        //环境变量参数为空则使用默认全局配置
        if(StringUtils.isEmpty(fileSuffixName)){
            fileSuffixName = "";
        }else{
            fileSuffixName = "-" + fileSuffixName;
        }
        try (InputStream filePath = PropertiesUtil.class.getResourceAsStream("/file-path" + fileSuffixName + ".properties");
             InputStream serviceUrl =  PropertiesUtil.class.getResourceAsStream("/service-url-conf" + fileSuffixName + ".properties");){
            FILEPATH_PROP.load(filePath);
            SERVICEURL_PROP.load(serviceUrl);
        } catch (Exception e) {
            result = "fail";
            logger.info("获取配置文件失败\n" + e);
        }
        return result;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值