1. 程式人生 > >Spring常用屬性的注入及屬性編輯器

Spring常用屬性的注入及屬性編輯器

           對於物件的注入,我們使用ref方式,可以指定注入的物件,下面看下對於基本型別的注入,以及當spring無法轉換基本型別進行注入時,如何編寫一個類似轉換器的東西來完成注入。

一,基本型別的注入

           下面寫一個簡單類,來看下spring中對於基本型別的注入:

<bean id="bean1" class="com.shuitian.spring.Bean1">
	
		<!-- <property name="strValue" value="hello_spring"/> --><!-- 也可以使用下面的方式 -->
		
		<!-- private String strValue -->
		<property name="strValue">
			<value>hello_spring</value>
		</property>
		
		<!-- private int intValue; -->
		<property name="intValue" value="123"/>
		
		<!-- private List listValue; -->
		<property name="listValue">
			<list>
				<value>list1</value>
				<value>list2</value>
			</list>
		</property>
		
		<!-- private Set setValue; -->
		<property name="setValue">
			<set>
				<value>set1</value>
				<value>set2</value>
			</set>
		</property>
		
		<!-- private String[] arrayValues; -->
		<property name="arrayValues">
			<list>
				<value>array1</value>
				<value>array2</value>
			</list>
		</property>
		
		<!-- private Map mapValue; -->
		<property name="mapValue">
			<map>
				<entry key="k1" value="v1"/>
				<entry key="k2" value="v2"/>
			</map>
		</property>
		
		
		
	</bean>

二,屬性編輯器

            在測試類中加入java.util.Date:

配置:

<property name="dateValue" value="2009-12-12"/>

         如果像前面那樣配置dataValue,為他注入值,會因為string在轉換Date的時候spring無法識別util.Date而報錯,所以,我們要自己定義一個類,來將如果轉換的這一過程寫下來。

/*
 * java.util.date屬性編輯器
 */
public class UtilDatePropertyEditor extends PropertyEditorSupport{

	private String pattern;//日期時間格式
	

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}

	@Override
	public void setAsText(String text) throws IllegalArgumentException {
		try {
			Date d=new SimpleDateFormat(pattern).parse(text);
			this.setValue(d);//設定轉換後的值
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
	}
}

      注意要繼承PropertyEditorSupport類並實現setAsText方法。

      轉換器的配置:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

	<bean id="customEditors"
		class="org.springframework.beans.factory.config.CustomEditorConfigurer">
		<!-- 屬性編輯器要放到 CustomEditorConfigurer  類的 customEditors(Map型別)成員變數上面去 -->
		<property name="customEditors">
			<map>
				<entry key="java.util.Date">
				<!-- 內部bean,只內部使用 -->
					<bean class="com.shuitian.spring.UtilDatePropertyEditor">
						<!-- 注入日期時間格式 -->
						<property name="pattern" value="yyyy-MM-dd"/>
					</bean>
				</entry>
			</map>
		</property>
	</bean>
	
	<!-- 不想通過外界訪問到 -->
	<!-- <bean id="utilDatePropertyEditor" class="com.shuitian.spring.UtilDatePropertyEditor"> 
		</bean> -->
		
</beans>


   add進spring的原始碼,圍觀下:

     這一配置的原因就是,我們要將自己定義的屬性編輯器,放到CustomEditorConfigurer 它的customEditors裡面,這樣spring才能使用到它。

相關推薦

Spring常用屬性注入屬性編輯

           對於物件的注入,我們使用ref方式,可以指定注入的物件,下面看下對於基本型別的注入,以及當spring無法轉換基本型別進行注入時,如何編寫一個類似轉換器的東西來完成注入。一,基本型

Spring XML配置注入Bean屬性舉例

Spring <Map>元素用來儲存多個鍵值對屬性,型別為java.util.Map;他的子標籤<entry>用來定義Map中的鍵值實體,下面舉例說明; Article.java 這個article class有一個屬性是作者聯名資訊,使用序號

Spring 父類注入屬性 在子類中呼叫為null

在spring中注入屬性的目標是例項而不是類 子類從父類繼承的值是與例項無關的 所以子類的屬性並沒有被賦值 工作背景: 有一個BaseService 有3個Dao成員 DaoA DaoB DaoC 並且 spring 為這3個成員分別注入了值 這三個Dao是直接可以拿過來執

linux中常用命令的使用vim編輯

開啟終端:ctrl+atl+t 命令、引數通過空格分開 ---------------------------------------------------------------------- 1.pwd 命令 pwd    顯示當前目錄的絕對地址 -------

常用shell命令和vi編輯

css lin str 目錄 用戶輸入 重定向 move 處理 操作 Shell 介紹 Shell:殼(區別於:核) 普通意義上的shell就是可以接受用戶輸入命令的程序。它之所以被稱作shell是因為它隱藏了操作系統低層的細節。 Bourne-Again shell(ba

Spring 常用的註解“依賴註入”的實現

Spring 常用的註解及“依賴註入”1、spring註解@Controller 聲明Action組件@Service 聲明Service組件 @Service("myMovieLister") @Repository 聲明Dao組件@Component 泛指組件, 當不

除了vim, 還有哪些常用的牛逼的編輯, 之間的區別和優缺點

1.Vim Vim是從 vi 發展出來的一個文字編輯器。它具有程式碼補完、編譯及錯誤跳轉等方便程式設計的功能,在程式設計師中被廣泛的被使用。和Emacs並列成為Lunix系統使用者最喜歡的編輯器。 2. Eclipse Eclipse是一款很酷的開原始碼編輯器,

除了vim, 還有哪些常用的牛逼的編輯。 自行查詢資料, 調研除了gcc, 還有哪些常用的牛逼的編譯器,為什麼除錯的時候需要編譯選項中新增 -g在Linux下實現進度條程式

除了vim, 還有哪些常用的牛逼的編輯器, 並能夠橫向對比編輯器之間的區別和優缺點。 首先先有一個概念IDE(整合開發環境),厲害的有vs等等。vim以及Emacs就向著這個方向發展。為了實現其強大功能。vim有了多模式編輯有(normal,insert,vis

除了vim, 還有哪些常用的牛逼的編輯,除了gcc, 還有哪些常用的牛逼的編譯器,為什麼除錯的時候需要編譯選項中新增 -g,調研readelf命令,Linux下實現進度條程式.

除了vim, 還有哪些常用的牛逼的編輯器 Brackets Brackets也是一款為Linux開發者設計的開原始碼編輯器,使用Brackets寫程式碼,你不會被任何事情所打斷。比如在寫HTML程式碼時,即便你沒有儲存程式碼也可以及時預覽你的Web頁面效果。你也可以使用T

Linux Ubuntu Server 14.04 LTS 處理中文亂碼vi編輯操作概要

陳科肇 ========= 操作環境:ubuntu server 14.04 ================================ 首先在網上搜了一些資料,說是暫時無法解決。 但在安裝的時候選擇的是中文安裝,因此在命令頁面顯示的是方格的亂碼。 既然是Linu

盤點最常用的十款程式碼編輯

市面上用於開發工作的編輯器非常多,筆者會經常因為不同的程式語言該如何選擇好用的編輯器而感到糾結。而在隨後從事 React Native 開發工作過程中,對相應的編輯器做了一些探索和研究,本文總結了一些非常適合移動應用開發的編輯器和 IDE。 Nuclide 是

VMware Workstation的網路虛擬編輯

網路型別:橋接,僅主機,NAT 可以上外網: 橋接:VM和自己電腦同一個網段 NAT:VM和自己電腦不是同一個網段,經過地址轉換 不能上外網: 僅主機:VM和自己電腦在同一網段 橋接(bridged) 在這種模式下,VMware虛擬出來的作業系統就

LINUX檔案內容處理文字編輯vim

Linux基本操作命令 echo命令 echo命令: 把echo後面的內容顯示到螢幕。 -n 顯示內容的時候不顯示每行結尾的回車 echo 內容 >> 檔名 表示把內容加到一個檔案的末尾 echo 內容 > 檔名 表示把內容覆蓋原先的檔案內容 cat命令

linux命令VI編輯基礎

​/dev:系統所提到的裝置;​/etc:配置資訊;​/lib:存放庫;​/home:普通使用者主目錄;​/root:根使用者主目錄;​pwd顯示當前路徑;ls列目錄內容,ls -a顯示該目錄下的所有檔案,ls -l 列表方式顯示,ls -R遞迴的方式顯示;cd改變目錄​;cat檢視檔案內容,nl加行號,he

Vi、VimGedit編輯

Linux doc by: zollty 搜尋(注意,不需要輸入:號。也可以先輸入:號再鍵入命令) /string……………………向後搜尋,從游標處向檔案尾搜尋,按n鍵繼續搜尋下一個 ?strin

Spring經常使用屬性的註入屬性編輯

edt 註入 nim jsm fin v2x avt ket jsf 對於對象的註入,我們使用ref方式,能夠指定註入的對象。以下看下對於基本類型的註入。以及當spring無法轉換基本類型進行註入時,怎樣編寫一個相似轉換器的東西來完畢註

熟悉JS中的常用選擇屬性、方法的調用

model bower 文本 font [1] 選擇 val yellow width 選擇器、屬性及方法調用的配合使用: <style> #a{ width: 200px; he

Spring自定義屬性編輯

tex java block tom support bar white sim name bean類: [html] view plain copy package com.zm.bean; import java.util.Date; pu

Java spring自定義屬性編輯

匯入測試jar包junit-4.8.2.jar 字串自定義Date轉化 1.新增分拆配置檔案applicationContext_editor.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="

深入分析Spring屬性編輯(預設屬性編輯和自定義屬性編輯

在Spring配置檔案或配置類裡,我們往往通過字面值為Bean各種型別的屬性提供設定值:不管是double型別還是int型別,在配置檔案中都對應字串型別的字面值。BeanWrapper填充Bean屬性時如何將這個字面值轉換為對應的double或int等內部型別呢?我們可以隱約