1. 程式人生 > >【Java】SpringMVC專案正式環境測試環境切換方案

【Java】SpringMVC專案正式環境測試環境切換方案

之前同事在專案裡面正式環境測試環境配置檔案都放在一起,每次釋出都得註釋一部分,讓另一部分啟用,隨著配置檔案內容的越來越多,很容易在釋出時候出錯,我摸索了半天實驗出來一個方案,可供大家參考。本方案基於maven的spring.profiles.active功能,用的最簡單粗暴方式使用,沒有使用執行命令列動態更改的方案,說下具體的實現:

準備一個完整的SpringMVC專案

1.首先在web.xml裡面配置正式環境 測試環境 開發環境:

1<!-- 環境切換專用: dev 開發環境  test:測試環境  prod:正式環境 -->
2<context-param>
3 <param-name>spring.profiles.active</param-name>
4<param-value>dev</param-value>
5</context-param>

2.applicationContext配置
在web.xml裡面,我的配置是這樣的

1<!-- spring -->
2    <context-param>
3        <param-name>contextConfigLocation</param-name>
4        <param-value>classpath:applicationContext.xml</param-value>
5    </context-param>

所以,到applicationContext.xml 裡面,配置環境切換,

 1<?xml version="1.0" encoding="UTF-8"?>
 2<beans 
 3    xmlns="http://www.springframework.org/schema/beans"
 4    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5    xmlns:p="http://www.springframework.org/schema/p"
 6    xmlns:tx="http://www.springframework.org/schema/tx" 
 7    xmlns:aop="http://www.springframework.org/schema/aop"
 8    xmlns:context="http://www.springframework.org/schema/context" 
 9    xmlns:util="http://www.springframework.org/schema/util"
10    xmlns:cache="http://www.springframework.org/schema/cache"
11    xsi:schemaLocation="http://www.springframework.org/schema/beans 
12                        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
13                        http://www.springframework.org/schema/context
14                        http://www.springframework.org/schema/context/spring-context-4.0.xsd
15                        http://www.springframework.org/schema/tx
16                        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
17                        http://www.springframework.org/schema/aop
18                        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
19                        http://www.springframework.org/schema/cache
20                        http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
21                        http://www.springframework.org/schema/util
22                        http://www.springframework.org/schema/util/spring-util.xsd">
23
24    <beans profile="dev"> 
25        <import resource="dev/context-dev.xml" /> 
26    </beans>
27    <beans profile="prod"> 
28        <import resource="prod/context-prod.xml" /> 
29    </beans>
30</beans>

dev則執行開發環境配置,prod執行正式環境配置。

接下來拿context-dev.xml作為樣例

3.context-dev.xml檔案

 1<?xml version="1.0" encoding="UTF-8"?>
 2<beans 
 3    xmlns="http://www.springframework.org/schema/beans"
 4    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5    xmlns:p="http://www.springframework.org/schema/p"
 6    xmlns:tx="http://www.springframework.org/schema/tx" 
 7    xmlns:aop="http://www.springframework.org/schema/aop"
 8    xmlns:context="http://www.springframework.org/schema/context" 
 9    xmlns:util="http://www.springframework.org/schema/util"
10    xmlns:cache="http://www.springframework.org/schema/cache"
11    xsi:schemaLocation="http://www.springframework.org/schema/beans 
12                        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
13                        http://www.springframework.org/schema/context
14                        http://www.springframework.org/schema/context/spring-context-4.0.xsd
15                        http://www.springframework.org/schema/tx
16                        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
17                        http://www.springframework.org/schema/aop
18                        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
19                        http://www.springframework.org/schema/cache
20                        http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
21                        http://www.springframework.org/schema/util
22                        http://www.springframework.org/schema/util/spring-util.xsd">
23
24    <context:property-placeholder location="classpath:dev/application-dev.properties" />
25
26    <context:annotation-config />
27    <!-- 使用annotation 自動註冊bean,並保證@Required,@Autowired,@Resource的屬性被注入 -->
28    <context:component-scan base-package="com.naton" />
29
30    <import resource="classpath:spring-mongodb.xml"/>
31    <import resource="classpath:spring-shiro.xml"/>
32
33    <bean id="multipartResolver"
34        class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
35    <bean
36        class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
37</beans>

配置檔案中清晰的寫好了資料庫的配置、許可權的配置,當然,還有配置檔案application-dev.properties,
application-dev.properties這個檔案裡面按照自己的需求來設計。
4.這時候你會發現Spring容器初始化確實完成了配置檔案的切換,但是配置檔案在專案裡面也有使用,如何完成動態的切換?
我的方案:建立一個BaseContextListener 檔案繼承 ServletContextListener,配置到web.xml裡面,然後在這個
BaseContextListener 檔案裡面獲取web.xml裡面配置的spring.profiles.active裡面的引數

 1// 這個方法在Web應用服務做好接受請求的時候被呼叫。   
 2    @Override
 3    public void contextInitialized(ServletContextEvent event){   
 4      this.context = event.getServletContext();   
 5      System.out.println("The Simple Web App. Is Ready");  
 6      String  env = this.context.getInitParameter("spring.profiles.active");  
 7      if (StringUtils.isBlank(env)) {
 8          SystemConfig.ENV = "dev";
 9      }else{
10          SystemConfig.ENV = env;
11      }
12      System.out.println("當前環境:" + SystemConfig.ENV);
13    }   

這樣容器啟動時候就可以進行設定 SystemConfig.ENV的值了,接下來 就是SystemConfig.java檔案的配置

5.SystemConfig.java檔案:

 1public static String ENV = "dev"; // 環境切換用
 2static {
 3        try {
 4            PropertiesConfiguration config = null;
 5            switch (ENV) {
 6            case "dev":
 7                config = new PropertiesConfiguration("/dev/application-dev.properties");
 8                break;
 9            case "prod":
10                config = new PropertiesConfiguration("/prod/application-prod.properties");
11                break;
12            default:
13                config = new PropertiesConfiguration("/dev/application-dev.properties");
14                break;
15            }
16}

通過以上步驟,就可以實現環境的動態切換,執行專案,在專案打印出 當前環境:xxx 就可以判斷環境是否切換了。

相關推薦

JavaSpringMVC專案正式環境測試環境切換方案

之前同事在專案裡面正式環境測試環境配置檔案都放在一起,每次釋出都得註釋一部分,讓另一部分啟用,隨著配置檔案內容的越來越多,很容易在釋出時候出錯,我摸索了半天實驗出來一個方案,可供大家參考。本方案基於maven的spring.profiles.active功能,用的最簡單粗暴方

JAVA使用Mockito進行單元測試

1. @Mock與@InjectMocks的作用 @Mock:建立一個Mock @InjectMocks:建立一個例項(被測試類的例項,一般只用一次該註解) 在單元測試某個類的時候,需要標註@InjectMocks,該類的變數需要添加註解@Mock,當需要用到被測試類中

JavaSSH專案I筆記

目錄 3.0 原理 4.0 情景 4.1 原因 4.2 解決 5.0 情景 5.1 原理 5.2 實現 6.1 情景

JavaSpringMVC整合mybatis 連線池c3p0和druid分別實驗

1.pom.xmlSpring框架包 mybatis包 AOP包 aspectj包 aopalliance包<!-- mysql start --> <dependency> <groupId>mysql</groupId

JavaSpringMVC整合poi實現excel的匯入匯出

2.特點:結構: HSSF - 提供讀寫Microsoft Excel格式檔案的功能。 XSSF - 提供讀寫Microsoft Excel OOXML格式檔案的功能。 HWPF - 提供讀寫Microsoft Word格式檔案的功能。 HSLF - 提供讀寫Microsof

JavaSpringMVC Controller介面控制器詳解

1、ParameterizableViewController 引數化檢視控制器,不進行功能處理(即靜態檢視),根據引數的邏輯檢視名直接選擇需要展示的檢視。 Java程式碼    <bean name="/parameterizableView" class

Java-小專案-小型學生管理系統

本專案例項是根據“韓順平-循序漸進學java"的教學視訊所完成的,該專案的介面如下圖所示,這個微型的學生管理系統可通過對資料庫的操作,具有基本的增刪改查功能。所涉及的知識點主要包括介面的佈局,連線資料庫,用sql語句對資料庫進行操作。很適合入門學習。 在做該專案之前,我們

JAVAJDK在Mac上的自由切換

一.檢視版本 終端輸入:/usr/libexec/java_home -V 檢視2個版本最終安裝目錄: JDK 1.7:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home JDK 1.8:/Library/J

Java移動JDK路徑後,修改環境變量不生效 Error: could not open `C:Program FilesJavajre1.8.0_131libamd64jvm.cfg'

技術 alt OS log 修改環境變量 post home http hid 場景: JDK原先裝在C盤的,現在移動到了D盤,並在環境變量修改了%JAVA_HOME%的新路徑,但是CMD中輸入java後依然報錯。 Error: could not open `C:\Pro

Java一次SpringMVC+ ibatis 配置多資料來源經歷

    問題 如何在一個web專案中使用兩個資料來源,並且不同的介面可以按需選擇資料庫。 方案 最開始的做法 因為我們的專案用的是ibatis作為ORM框架,在其配置檔案中可以配置資料來源資訊,原始配置如下: spring-application.xm

LinuxJavaCentOS7安裝最新版Java1.8.191執行開發環境

1、前言   本來在寫【Linux】【Apatch Tomcat】安裝與執行。都快寫完了。   結果。。。我忘記安裝 Java 環境   然後。。。新開了部落格編輯頁面。   最後。。。我的那個沒了。。。沒了。。。真的刺激。。。 2、開始   1、yum list | grep java-1.8

JAVA在SpringBoot 專案中 利用maven 的generate外掛

使用maven 外掛 generate生成MyBatis相關檔案 在專案中增加 maven 依賴 - mybatis-spring-boot-starter - mysql-connector-java - mybatis-generator-maven-plugin 外掛 自

LinuxJavaCentOS7安裝最新版Java1.8.191運行開發環境

gre openjdk ima 配置環境 忘記 開發 變量 open lis 1、前言   本來在寫【Linux】【Apatch Tomcat】安裝與運行。都快寫完了。   結果。。。我忘記安裝 Java 環境   然後。。。新開了博客編輯頁面。   最後。。。我的

java憤怒的小鳥專案編寫記錄

package homework; import java.util.Scanner; public class AGbird2 { public static void main(String[] args) { // TODO Auto-generated method stub

Java開發工具--Eclipse&MySQL官網自選版本下載以及專案jar包下載

我們一般在使用開發軟體時,不一定使用最新版本的開發軟體,所以需要選擇適用的開發軟體來開發專案,下面是我總結的eclipse以及mysql官網自選版本下載步驟: Eclipse自選版本下載 百度輸入eclipse,進入eclipse官網地址,點選右上角的Down

Javajdk環境變數配置

1. 在我的電腦上單擊右鍵,選擇屬性(小編的電腦系統是Windows 7系統 ) 2. 點選下圖左邊的 “高階系統設定” 3. 高階->環境變數(下圖右下角) 4. 進去後的介面 5. 在下面的系統變數中找到Path,點選編輯 6. 配置Path

Javamaven多專案資源共享

<resources> <resource> <!-- <directory>${project.parent.relativePath}/../../config</directory> --&g

JAVAJDK安裝和環境搭建(jdk8+win7)

1.jdk的下載 jdk官網目前最新版本下載地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 百度雲盤地址(jdk8版本,本文以這個版本為例): https://pan.baidu.com/s/1

javaxml檔案表建立及讀取環境搭建並採用DOM4J完成XML檔案匯入到資料庫

    java一種簡單的解析xml方法是用DOM進行解析, dom4j是一個Java的XML API,類似於jdom,用來讀寫XML檔案的,dom4j用於處理xml是很常用的技術,本篇部落格介紹xml檔案表建立及讀取環境搭建並採用DOM4J完成XML檔案匯入到資料庫。

Java 環境變數如何配置?

Java知識簡介與環境變數配置問題 一、在學習一門語言中,不僅需要掌握其語法結構,開發平臺以及環境也是很重要的。在開始Java學習之前首先對其進行壓縮包的下載安裝,以及開發平臺環境下載安裝。基於此下面文章就此展開: 1、        下載並安裝JDK包,然後進行快速正確安裝操作。(具體安裝步驟網上很多,