Spring之——Spring.profile實現開發、測試和生產環境的配置和切換
軟體開發過程一般涉及“開發 -> 測試 -> 部署上線”多個階段,每個階段的環境的配置引數會有不同,如資料來源,檔案路徑等。為避免每次切換環境時都要進行引數配置等繁瑣的操作,可以通過spring的profile功能來進行配置引數的切換。
以我用到的專案的實際情況為例,首先可以在resources資料夾下分別為每個環境建立單獨的資料夾(也可以額外建立一個common資料夾,用於存放公共的引數配置檔案),每個資料夾下面存放對應的環境所需的配置檔案,就像這樣子:
在resources資料夾下建立applicationContext-profile.xml檔案,用來定義不同的profile:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:c="http://www.springframework.org/schema/c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd"> <description>spring profile配置</description> <!-- 開發環境配置檔案 --> <beans profile="development"> <context:property-placeholder location="classpath*:common/*.properties, classpath*:development/*.properties" /> </beans> <!-- 測試環境配置檔案 --> <beans profile="test"> <context:property-placeholder location="classpath*:common/*.properties, classpath*:test/*.properties" /> </beans> <!-- 生產環境配置檔案 --> <beans profile="production"> <context:property-placeholder location="classpath*:common/*.properties, classpath*:production/*.properties" /> </beans> </beans>
這樣就實現了通過profile標記不同的環境,接下來就可以通過設定spring.profiles.default和spring.profiles.active這兩個屬性來啟用和使用對應的配置檔案。default為預設,如果沒有通過active來指定,那麼就預設使用default定義的環境。
這兩個屬性可以通過多種方法來設定:
- 在web.xml中作為web應用的上下文引數context-param;
- 在web.xml中作為DispatcherServlet的初始化引數;
- 作為JNDI條目;
- 作為環境變數;
- 作為JVM的系統屬性;
- 在整合測試類上,使用@ActiveProfiles註解配置。
前兩者都可以在web.xml檔案中設定:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext*.xml
</param-value>
</context-param>
<!-- 在上下文context-param中設定profile.default的預設值 -->
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
</context-param>
<!-- 在上下文context-param中設定profile.active的預設值 -->
<!-- 設定active後default失效,web啟動時會載入對應的環境資訊 -->
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>development</param-value>
</context-param>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 在DispatcherServlet引數中設定profile的預設值,active同理 -->
<init-param>
<param-name>spring.profiles.default</param-name>
<param-value>development</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
啟用指定的環境,也可以通過JVM引數來設定,可以在tomcat的啟動指令碼中加入以下JVM引數來啟用:
-Dspring.profiles.active="production"
在程式中,也可以通過 @Profile("...") 對某些資源進行註解,這樣只有當選擇對應的環境時,才會產生對應的bean,如:
@Bean
@Profile("production")
public DataSource jndiDataSource(){
JndiObjectFactoryBean jofb=new JndiObjectFactoryBean();
jofb.setJndiName("jndi/iDS");
jofb.setResourceRef(true);
jofb.setProxyInterface(xxx.class);
return (DataSource) jofb.getObject();
}
}
參考:
相關推薦
Spring之——Spring.profile實現開發、測試和生產環境的配置和切換
軟體開發過程一般涉及“開發 -> 測試 -> 部署上線”多個階段,每個階段的環境的配置引數會有不同,如資料來源,檔案路徑等。為避免每次切換環境時都要進行引數配置等繁瑣的操作,可以通過spring的profile功能來進行配置引數的切換。 以我用到的專案的實際
Spring.profile實現開發、測試和生產環境的配置和切換
軟體開發過程一般涉及“開發 -> 測試 -> 部署上線”多個階段,每個階段的環境的配置引數會有不同,如資料來源,檔案路徑等。為避免每次切換環境時都要進行引數配置等繁瑣的操作,可以通過spring的profile功能來進行配置引數的切換。 以我用到的專案的實際情況
通過 spring 容器內建的 profile 功能實現開發環境、測試環境、生產環境配置自動切換
軟體開發的一般流程為工程師開發 -> 測試 -> 上線,因此就涉及到三個不同的環境,開發環境、測試環境以及生產環境,通常這三個環境會有很多配置引數不同,例如資料來源、檔案路徑、url等,如果每次上線一個新版本時都手動修改配置會十分繁瑣,容易出錯。spring 為我
【Spring】使用@Profile註解實現開發、測試和生產環境的配置和切換,看完這篇我徹底會了!!
## 寫在前面 > 在實際的企業開發環境中,往往都會將環境分為:開發環境、測試環境和生產環境,而每個環境基本上都是互相隔離的,也就是說,開發環境、測試環境和生產環境是互不相通的。在以前的開發過程中,如果開發人員完成相應的功能模組並通過單元測試後,會通過手動修改配置檔案的形式,將專案的配置修改成測試環境
centos svn伺服器搭建 多賬號多專案不同許可權配置 hook配置 專案提交自動同步 測試及生產環境配置
內容分為兩大部分:1.svn伺服器搭建配置 2.svn hook配置專案提交自動同步到測試環境,及測試生產環境配置。 一,伺服器配置 1、安裝svn: yum install subversion svn –version 如果彈出svn版本資訊說明安
win 10 + archlinux 雙系統安裝(BTRFS檔案系統)、配置、美化----安裝桌面環境配置和基本美化(xfce4+lightdm)
接著上一篇的講,當你安裝完系統之後,你會發現,開機後仍然是命令列介面。步驟如下: 登入系統,輸入 root , 然後敲擊 回車 , 首先,你需要執行如下命令進行有線連線的
spring通過profile實現開發和測試環境切換
我們 其中 ror web cms -m acc 系統環境 oot 以開發測試為例,介紹tomcat部署應用和maven部署應用下利用profile實現測試環境和開發環境切換一、tomcat部署應用1、數據源配置dev.properties 路徑:/src/main/res
Spring學習之——手寫Spring原始碼V2.0(實現IOC、DI、MVC、AOP)
前言 在上一篇《Spring學習之——手寫Spring原始碼(V1.0)》中,我實現了一個Mini版本的Spring框架,在這幾天,博主又看了不少關於Spring原始碼解析的視訊,受益匪淺,也對Spring的各元件有了自己的理解和認識,於是乎,在空閒時間把之前手寫Spring的程式碼重
spring-boot 多環境化配置 (如:開發,測試,生產等)
sring cloud中可以搭建配置中心,可以從本地電腦或者git上讀取配置,而且還可以選擇配置的版本(開發,測試,生產) spring boo
Spring Cloud 進階之路 -- Eureka的高可用,搭建 Eureka叢集(開發環境和生產環境)
Eureka 作為註冊中心,必須保障高可用,否則會直接影響有關的整個服務體系。 以下分別進行開發環境和生產環境的多服務中心叢集配置。 目錄 一、開發環境簡易配置: 1、配置Configurations 2、在Configurations 裡
Spring boot 的profile功能如何實現多環境配置自動切換
通常服務端應用開發需要經過以下幾個流程: 開發 -> 測試 -> RC驗證 -> 上線 這就涉及到四個不同的環境,開發環境、測試環境、RC環境以及生產環境,為了避免不同環境之間相互干擾,通常需要獨立部署資料庫、快取伺服器等,那麼應用配置也要做相應的調整。
spring-boot 多環境化配置 (如:開發,測試,生產等)
sring cloud中可以搭建配置中心,可以從本地電腦或者git上讀取配置,而且還可以選擇配置的版本(開發,測試,生產) spring boot專案在resource下預設只有application.properties,但還可以
Spring第三天:Spring的AOP的註解開發、Spring的宣告式事務、JdbcTemplate
目錄 1.Spring的AOP基於AspectJ的註解開發 1.1Spring基於ApsectJ的註解的AOP開發 1.1.1建立專案,引入jar包 1.1.2引入配置檔案 1.1.3編寫目標類並配置 1.1.4編寫切面類並配置 1.1.5使用註解的AOP物件目標類進
Spring MVC+Mybatis框架實現Junit4單元測試
作為程式設計師,我們自己在寫完程式的時候應該先做完單元測試,確認無誤以後才把程式碼提交到公司公共的系統裡面去,這樣做其實也有利於提高自己的能力,這裡做了個簡單的單元測試案列寫法。 上程式碼: /** * 配置Spring與junit4整合,junit啟動時載入sprin
深入理解Spring 之 Spring 進階開發必知必會 之 Spring 擴充套件介面
# 前言 我們在前幾篇文章中已經深入瞭解了 Spring 的 IOC 機制和 AOP 機制,在閱讀原始碼的同時,樓主對 Spring 中設計模式的運用可以說五體投地,還有我們還知道更重要的一點就是:Spring 留給了我們大量的擴充套件介面供開發者去自定義自己的
Spring 之Aop基本實現
Aop 程式設計環境搭建 匯入兩個jar包(Aop/aopalliance) Spring 對Aop的實現(基於Schema-based方式) 通常通知類 前置通知(MethodBeforeAdvice) 後置通知(A
spring之IOC模擬實現
使用Spring框架已經有很長時間了,一直沒有仔細的想過框架的設計思想是什麼樣的,底層到底是怎麼實現的,這幾天除錯程式看了些原始碼,寫下來做個記錄。由於Spring框架博大精深,個人理解的難免有不正確的地方,希望看到的朋友可以指正,不勝感激。 一 什麼
一、原始碼分析 Spring 之Spring 概述
Spring 概述 Spring 是一個開源的輕量級Java SE(Java 標準版本)/Java EE(Java企業版本) 開發應用框架,集成了很多設計模式(工廠設計模式、代理設計模式等),是一個輕量級框架(低汙染)。降低了類和類之間的耦合,具有解耦和的作用,可以對物件、框架進行管理,
SSM 實訓筆記 -11- 使用 Spring MVC + JDBC Template 實現篩選、檢索功能(maven)
SSM 實訓筆記 -11- 使用 Spring MVC + JDBC Template 實現篩選、檢索功能(maven) 本篇是新建的一個數據庫,新建的一個完整專案。 本篇內容: (1)使用 Spring MVC + JDBC Template 實現資料庫查詢 (2)實現對資
Spring Cloud 進階之路 -- Eureka的高可用,搭建 Eureka叢集(開發環境和生產環境)
Eureka 作為註冊中心,必須保障高可用,否則會直接影響有關的整個服務體系。 以下分別進行開發環境和生產環境的多服務中心叢集配置。 目錄 一、開發環境簡易配置: 1、配置Configurations 在上一