1. 程式人生 > >Java學習筆記38:通過Spring Bean 注入static變數,來設計一套適合測試,開發,生產環境的配置項

Java學習筆記38:通過Spring Bean 注入static變數,來設計一套適合測試,開發,生產環境的配置項

這邊文章的目的主要是為了在spring開發web專案的時候,讓我們的測試,開發,生產環境的配置項

  • .properties作為配置檔案。

我們首先需要建立一個config資料夾,然後建立開發,測試,生產環境的.properties配置項檔案。

例如,dev.properties檔案為開發環境,pre.properties檔案為生產環境。

dev.properties配置內容為:

#test
test.username=initphp

那麼,我們這個.properties檔案的配置,如何打入xml檔案中呢?別急,其實很簡單,我們需要修改pom.xml

  • 配置pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">



	<!-- pom詳細引數配置 -->
	<modelVersion>4.0.0</modelVersion>
	<artifactId>xxxx.server</artifactId>
	<name>xxxx server</name>
	<packaging>war</packaging>
	<version>1.0.0</version>

	<!-- 自定義的引數變數,使用 例如:${org.springframework-version} -->
	<properties>
		<java-version>1.6</java-version>
		<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<!-- 配置檔案 -->
	<profiles>
		<profile>
			<id>dev</id>
			<properties>
				<env>dev</env>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<id>qa</id>
			<properties>
				<env>qa</env>
			</properties>
		</profile>
		<profile>
			<id>pre</id>
			<properties>
				<env>pre</env>
			</properties>
		</profile>
		<profile>
			<id>prod</id>
			<properties>
				<env>prod</env>
			</properties>
		</profile>
	</profiles>
	
	<!-- 依賴的包 -->
	<dependencies>
	
		
	</dependencies>
	
	<!-- 編譯設定 -->
	<build>
		<filters>
			<filter>config/${env}.properties</filter>
		</filters>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>

		<plugins>
			<plugin>
				<artifactId>maven-eclipse-plugin</artifactId>
				<version>2.9</version>
				<configuration>
					<additionalProjectnatures>
						<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
					</additionalProjectnatures>
					<additionalBuildcommands>
						<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
					</additionalBuildcommands>
					<downloadSources>true</downloadSources>
					<downloadJavadocs>true</downloadJavadocs>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.5.1</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<compilerArgument>-Xlint:all</compilerArgument>
					<showWarnings>true</showWarnings>
					<showDeprecation>true</showDeprecation>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>exec-maven-plugin</artifactId>
				<version>1.2.1</version>
				<configuration>
					<mainClass>org.test.int1.Main</mainClass>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

主要<profiles>中配置了各種環境的配置項引數。<filters>中,用於讀取和替換配置。

  • 替換XML中的配置項變數,我們通過spring bean注入的方式,將配置項引數注入Config.java類中的靜態變數。

例如我們主要注入到com.xxxx.xxxx.common.bo.ConfigBo,我們預先定義的一個配置類中。先看一下ConfigBo這個類:

/**
 * 常量配置
 * @author hanqi
 */
public class ConfigBo {

    /** 每頁顯示頁數 */
    public static final int PAGE_SIZE              = 20;
    
    public static String    USERNAME         = ""; //被注入的static變數,不能有final終態關鍵字

    //bean注入 USERNAME 必須要用 set函式
    public void setUserName(String userName) {
        USERNAME = userName;
    }

}

我們需要修改xml檔案,添加註入的Bean:

	<bean class="com.xxxx.xxxx.common.bo.ConfigBo">
		<property name="userName" value="${test.username}" />
	</bean>

這個時候,我們就能在專案中,靜態呼叫ConfigBo.USERNAME這個常量了,而不需要關心測試環境,開發環境以及正式環境的區別了。

xml中的${test.username}實際上是將properties配置檔案中的選項值進行了替換,所以在mvn install後,target目錄下,檢視xml檔案,就可以看到userName的值就是"initphp"

相關推薦

Java學習筆記38通過Spring Bean 注入static變數設計適合測試開發生產環境配置

這邊文章的目的主要是為了在spring開發web專案的時候,讓我們的測試,開發,生產環境的配置項 .properties作為配置檔案。 我們首先需要建立一個config資料夾,然後建立開發,測試,生產環境的.properties配置項檔案。 例如,dev.proper

通過Spring Bean 注入static變數設計適合測試開發生產環境配置

(http://blog.csdn.net/initphp/article/details/8834844) 這邊文章的目的主要是為了在spring開發web專案的時候,讓我們的測試,開發,生產環境的配置項 .properties作為配置檔案。 我們首先需要建

Java學習筆記(10)Spring Bean配置

Spring Beans自動裝配 Beans自動裝配: Spring 容器可以在不使用<constructor-arg>和<property> 元素的情況下自動裝配相互協作的 bean 之間的關係,這有助於減少編寫一個大的基於 S

Spring學習筆記 通過註解配置Bean

一、在 classpath 中掃描元件 元件掃描(component scanning): Spring 能夠從 classpath 下自動掃描, 偵測和例項化具有特定註解的元件. 特定元件包括: @Component: 基本註解, 標識了一個受 S

Java 學習筆記14Spring 資料庫資料來源DBCP配置說明

連線資料庫都必須要有資料連線,一般Spring中採用DBCP配置源,通過在bean.xml中配置相應的資料配置,就可以連線資料庫了,可以看一下以下相關配置: <bean id="jdbc" class="org.springframework.beans.fac

Effictive Java學習筆記1創建和銷毀對象

安全 需要 () 函數 調用 bsp nbsp bean 成了 建議1:考慮用靜態工廠方法代替構造器 理由:1)靜態方法有名字啊,更容易懂和理解。構造方法重載容易讓人混淆,並不是好主意    2)靜態工廠方法可以不必每次調用時都創建一個新對象,而公共構造函數每次調用都會

Java學習筆記1計算機基礎知識、java語言基礎。

一、計算機基礎知識 1、 計算機是一種能夠按照程式執行,自動、高速處理海量資料的現代化智慧電子裝置。由硬體和軟體所組成,沒有安裝任何軟體的計算機稱為裸機。常見的形式有臺式計算機、筆記本計算機、大型計算機等。 硬體通常由CPU、主機板、記憶體、電源、主機箱、硬碟、顯示卡、鍵盤、滑鼠,顯示器等多

Java學習筆記總結JAVA中String、StringBuilder、StringBuffer類的區別

不斷地學習,不斷地填充自己的技術庫,學習Java已經有一段時間了,由一開始的不適應到後來的足以靈活應對,不僅僅取決於老師的精緻講課,還有就是依靠我的學習祕籍:記錄自己的學習筆記。今天給大家分享的技術學習筆記是JAVAString,StringBuilder以及StringBuffer這三個類之間的區

Git學習筆記3通過git log 檢視版本演變歷史

1.檢視git commit 的列表 使用命令: git log --online 2.指定最近的4個commit 檢視演變列表 使用命令: git log -n4 --online 3.檢視本地的分支 使用命令: git branch -v 4.建立一個臨時的分支,這個分支

Java學習筆記1匿名內部類的相關錯誤

class Test1_NoNameInnerClass { public static void main(String[] args) { //如何呼叫PersonDemo中的method方法呢? PersonDemo p=new PersonDemo(); //p.method(new

Java學習筆記3私有private關鍵字修飾符的理解

private 是一個許可權修飾符 可以修飾成員變數和成員方法,被其修飾的成員只能在本類中被訪問。 許可權: 在類中用private修飾的欄位,只能在本類和其伴生物件中訪問。 在類中用private[this]修飾的欄位,只能在本類中訪問。 類名前加private

Java學習筆記30二分查詢演算法程式碼

package create; public class Demo1_Array { public static void main(String[] args){ int[] arr = {11,22,33,44,55,66,77}; System.out.println(ge

Java學習筆記29Java基礎類庫簡介及lang包介紹彙總

Java基礎類庫簡介及lang包介紹 https://blog.csdn.net/gaoshoum/article/details/50194181 java.lang包介紹 https://blog.csdn.net/u012834750/article/details/7936155

Java學習筆記28String,StringBuffer,StringBuilder的區別

String,StringBuffer,StringBuilder的區別是什麼?String為什麼是不可變的? String是字串常量,StringBuffer和StringBuilder是字串變數。 StringBuffer是執行緒安全的,StringBuilder是

Java學習筆記27類實現介面相關問題

java中,一個類實現某個介面,必須重寫介面中的所有方法嗎??? 不一定,關鍵要看子類是否是抽象類。 如果子類是非抽象類,則必須實現介面中的所有方法; 如果子類是抽象類,則可以不實現介面中的所有方法,因為抽象類中允許有抽象方法的存在! 1、抽象類定義 抽象類往往用來表徵對問題領域進行

Java學習筆記26在大字串中查詢小串

package create; public class Test11 { public static void main(String[] args){ //定義大字串 String max="haha,lila,wolaila!"; String min="la"; //

Java學習筆記25Java indexOf() 方法

indexOf() 方法有以下四種形式: public int indexOf(int ch): 返回指定字元在字串中第一次出現處的索引,如果此字串中沒有這樣的字元,則返回 -1。 public int indexOf(int ch, int fromIndex): 返回從

Java學習筆記24java 中 valueof 方法的使用

public static String valueOf(boolean b)返回 boolean 引數的字串表示形式。 public static String valueOf(char c)返回 char 引數的字串表示形式。 public static String valueOf(i

Java學習筆記23Java中charAt()方法的使用

此方法返回位於字串的指定索引處的字元。該字串的索引從零開始。 charAt(int index)方法是一個能夠用來檢索特定索引下的字元的String例項的方法. charAt()方法返回指定索引位置的char值。 索引範圍為0~length()-1. 如: str.charA

Java學習筆記22Java實現模擬使用者登入

package create; import java.util.Scanner; public class Test1_In { /* * 模擬使用者登入,僅有三次嘗試機會 */ public static void main(String[] args){ Scann