web项目中不同环境配置不同参数(使用Spring的profile)

本文介绍了在web项目中如何使用Spring的profile特性来管理不同环境的配置,包括数据库连接、Zookeeper地址和对接参数。通过创建开发、测试和生产环境的配置文件夹,结合profile设置,解决了在不同环境间切换时需要手动修改配置的问题。同时,文章指出了在配置过程中遇到的XML格式不匹配和读取配置文件的错误,提供了相应的解决方案,包括移除XML配置、在web.xml和servlet配置中设置profile参数,以及使用@Value注解实现属性注入。
摘要由CSDN通过智能技术生成

1.问题:公司项目开发过程中主要三种环境:
a.本地开发运行调试
b.测试环境运行
c.生产运行
每次由部署到生产环境之前都需要改一堆的参数配置包括:
* 数据库连接配置参数
* zookeeper连接地址配置
* 其他对接公司的参数包括代理商号,签名key,请求地址等信息
2.解决:
为了解决上面的问题,一共进行两方面的设置:
* 对接上游的代码封装在了jar包中,参数原本是写在jar包中,每次切换环境都要重新打jar包
解决办法:将代码中读取参数的部分更改为:读取外部引用jar包的web项目的config.properties文件来完成的
* 将web项目中resources文件夹新建开发版,测试版,生产版不同的文件夹,通过spring-profile设置不同的启动选择不同的参数
参考:https://www.cnblogs.com/strugglion/p/7091021.html
3.按照上面的配置完成操作,开始运行程序发现对于我的项目还有些配置没有注意到:
其中比较明显的两出问题:
* profile指定无法指定xml格式的数据;在设置了xml类型的文件,会报错:Document root element “beans” must match DOCTYPE root “null”
开始以为是自己的xml文件中的配置错误,后来反复检查确实没有问题,最终将xml移除,只保留properties文件,profile 生效
* web.xml中不只要在context-param设置spring.profiles.default或spring.profiles.active;
在servlet dispatcherServlet中也要配置这个初始参数

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns="http://java.sun.com/xml/ns/javaee"; xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"; id="WebApp_ID" version="3.0">
  <display-name>OneCodePay_service_v1</display-name>  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
                classpath:spring-config.xml;
           </param-value>
  </context-param>

   <context-param>
  <description>设置profile.default的值</description>
  <param-name>spring.profiles.default</param-name>
  <param-value>development</param-value>
  </context-param>
 <context-param>
  <description>设置profile.active的值</description>
  <param-name>spring.profiles.active</param-name>
  <param-value>development</param-value>
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值