1. 程式人生 > >Spring之——Spring.profile實現開發、測試和生產環境的配置和切換

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(實現IOCDIMVCAOP)

前言 在上一篇《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

springIOC模擬實現

        使用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 在上一