1. 程式人生 > >Sping中的配置Bean詳解

Sping中的配置Bean詳解

(2).List集合注入:
陣列的定義和 List 一樣, 都使用 <list>
<bean id="……" class="……">  
      <list>  
              <value>value1</value>  
              <value>value2</value>  
              ……  
      </list>  
</bean>  
 
(3).Map集合注入:
Java.util.Map 通過 <map> 標籤定義, <map> 標籤裡可以使用多個 <entry> 作為子標籤,每個條目包含一個鍵和一個值。
因為鍵和值的型別沒有限制, 所以可以自由地為它們指定 <value>, <ref>, <bean> 或 <null> 元素。 
可以將 Map 的鍵和值作為 <entry> 的屬性定義: 簡單常量使用 key 和 value 來定義; Bean 引用通過 key-ref 和 value-ref 屬性定義。


<bean id="……" class="……">  
<map>  
              <entry key="key1" value="value1">  
              <entry key="key2" value="value2">  
              ……  
       </map>  
</bean>  
 
(4).Properties注入:
<bean id="……" class="……">  
<props>  
              <prop key="key1">value1</prop>  
              <prop key="key2">value2</prop>  
              ……  
       </props>  
</bean>  
 
注意:Spring會自動將其資料型別轉換,支援泛型。


三、Spring多個配置檔案組合方法
很多時候,由於Spring需要管理和配置的東西比較多,如果都放在一個配置檔案中,配置檔案會變的比較大,同時不方便與維護,一般好的做法是按照功能模組將Spring配置檔案分開,例如:DAO層配置到一個spring-dao.xml配置檔案中,Service層配置到spring-service.xml檔案中,Struts的action配置到spring-action.xml檔案中,然後通過下面兩種辦法將這些分散的配置檔案組合起來:
方法1:推薦
在一個作為Spring總配置檔案中的<bean>元素定義之前,通過<import>元素將要引入的spring其他配置檔案引入,例如:
<beans>  
       <import resource="spring-dao.xml"/>  
       <import resource="spring-service.xml"/>  
       <import resource="spring-action.xml"/>  
       ……  
       <bean>  


       </bean>  
       ……  
</beans>  
 
方法2:
----對於JavaSE的工程,當使用下面方法獲取ApplicationContext物件時將所有的spring配置檔案通過陣列傳遞進去,也可以使用萬用字元如spring-*.xml方式。
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{“spring配置檔案路徑"});  
----對於JavaEE工程,在web.xml檔案中指定spring配置檔案時可以指定多個,中間有逗號“,"分隔,也可以使用萬用字元方式。




四、基於Java註解(Annotation)的方式來配置Bean
Java註解(Annotation)是通過在java原始檔上新增標記欄位,然後通過反射的反射在編譯或者執行時獲取這些標記欄位以及其標記目標,然後進行相應處理的方法。使用註解可以進行某些配置,大大減少xml配置檔案的書寫麻煩,但是也有人認為註解方式不方便理解和維護,因此對於註解VS XML配置檔案一直爭論不斷,個人感覺沒有好壞之分,根據需求而定。
1、java基本註解
(1)、JDK內建註解:
JDK內建了3個註解:
------   @Override:宣告某個方法被重寫。
------   @Deprectated:宣告某個方法過時,不推薦使用。
------   @SuppressWarning({“unchecked”,…….}):告訴編譯器對於那些警告資訊忽略。


(2)、自定義java註解:
Java註解就是一種特殊的介面,自定義java註解非常方便,簡單例子如下:
@Retention(RetentionPolicy.RUNTIME)  
@Target(ElementType.CLASS)  
public @interface TestAnnotation{  
String value() default “”;  
}  


(3)、若要想自定義的註解可以被繼承,則需要在自定義註解類上加上“@Inherited”註解。


(4)、注意和說明:
----java的註解實際上是自動繼承了java.lang.annotation.Annotation介面,因此在自定義註解時不能繼承其他的註解或者介面。
----Retention:告訴編譯器如何處理註解,即註解執行在什麼時刻。
----RetentionPolicy是個列舉型別,有以下三種狀態值:
1).SOURCE:該註解儲存在原始檔中,編譯過後即廢棄。
2).CLASS:該註解儲存在class檔案中,是其預設的值。
3).RUNTIME:該註解儲存在class檔案中,並且有Java虛擬機器讀入解析,該型別非常重要,可以使用反射機制獲取註解相關資訊,可以進行程式分析處理。
--- @Target:指定註解的目標使用物件。
----ElementType也是個列舉型別,有以下幾種狀態值:
1).TYPE:該註解適用於class,interface,enum等類級別的目標物件。
2).FIELD:該註解適用於類中欄位級別的目標物件。
3).METHOD:該註解適用於類中方法級別的目標物件。
4).PARAMETER:該註解適用於方法引數級別的目標物件。
5).CONSTRUCTOR:該註解適用於類構造方法。
6).LOCAL_VARIABLE:該註解適用於區域性變數。
7).ANNOTATION_TYPE:該註解適用於annotation物件。
8).PACKAGE:該註解適用於package物件。
-----註解裡面只能宣告屬性,不能宣告方法,宣告屬性的方式比較特殊:
語法格式為:資料型別 屬性() default 預設值(預設值是可選的); 如:String value();
使用時,“註解物件(屬性=屬性值)”為註解指定屬性值,通過“註解物件.屬性;”就可以得到註解屬性的值。
-----註解的解析:使用java反射機制獲得註解的目標物件就可以得到註解物件,如:
通過反射得到了註解目標的Field物件field,則通過“field.getAnnotation(註解類.class);”就可以得到註解物件。


2、基於註解的Spring配置準備條件:
從Spring2.5以後,Spring開始全面支援註解方式配置,所以可以不用寫xml配置檔案,一樣可以使用spring。
(1).使用spring註解方式,必須加入spring註解方式所依賴的jar包:common-annotation.jar。
(2).使用註解方式時,必須在spring配置檔案的schema中添加註解的名稱空間如下:
xmlns:context=”http://www.springframework.org/schema/context”  
http://www.springframework.org/schema/context  
http://www.springframework.org/schema/context/spring-context-2.5.xsd  
(3).在spring配置檔案中註冊註解處理器:
在spring配置檔案中<bean>元素之前新增:
<context:annotation-config>  


3、基於註解的spring配置:
Spring2.5中使用四個註解按功能來進行對bean的配置:
(1)
[email protected]
:泛指元件,對於一般不好歸類的java Bean使用。
(2)[email protected]:用於標註配置業務層(service層)元件。
(3)[email protected]:用於標註配置控制層的元件(如Struts中的action)。
(4)[email protected]:用於標註配置資料訪問層元件,即一般的DAO層Bean物件。
注意:對於使用spring註解方式配置的bean物件,bean引用時預設名稱為被註解名稱的首字母小寫形式,也可以指定名稱,如:@Service(“userDao“)。


4、Spring的自動裝配:
自動裝配的是指不用手動顯式配置java Bean之間依賴關係,而是讓spring依據某種規則自動將合適的物件注入到目標物件的過程。Spring中常用@Autowire和@Resource來進行自動裝配。
(1)
[email protected]
:預設是按照物件的資料型別進行自動裝配的,如
@Autowire  
private UserDao userDao;  
 spring框架在執行時會自動將型別為UserDao的物件注入進來。
(2)[email protected]:預設是按照名稱或者Id進行自動裝配的,只有當找不到匹配的名稱或者Id時才按型別進行裝配,如:
@Resource(name=”userDao”)  
private UsreDao userDao;  
spring框架在執行時會將配置名稱或者id為“userDao”的物件注入進來。
注意:@Autowire和@Resource都既可以寫在欄位上,也可以寫在set方法上。


5、Spring的自動掃描:
Spring自動掃描機制是指,我們使用基於註解的spring配置方式後,spring的配置檔案中只需要註冊註解處理器,不用顯式地配置Bean,當spring在執行時會自動掃描根據給定的條件下類路徑中的所有bean,根據註解將它們注入和裝配起來並進行初始化的過程。
自動掃描很簡單,只需要在spring的配置檔案中新增如:
<context:component-scan base-package=“要自動掃描的包名“>  
Spring在執行時就可以對指定的包中所有添加了Spring註解的bean自動掃描,注入,裝配和初始化。
注意:基於註解的spring配置,自動裝配和自動掃描是緊密聯絡在一起協同工作的,都需要引入context的名稱空間。

相關推薦

Sping配置Bean

(2).List集合注入: 陣列的定義和 List 一樣, 都使用 <list> <bean id="……" class="……">         <list>                 <value>value1</value>      

Spring 配置Bean

Car類(裡面有屬性有無參建構函式,記住一定要有無參的建構函式,不然會報錯) 這個裡面有建構函式的過載方法 package cn.com.day01; public class Car { /*author:命運的信徒 * date:2018/12/19 * arm:Spri

UCenter和應用配置資訊

各引數說明: UC_DBHOST:UCenter 的 MySQL  伺服器。可以包括埠號,例如 “hostname:port”,或者到本地套接字的路徑,例如對於 localhost 的 “:/path/to/socket”。 UC_DBUSER:UCenter 的 MySQL 資料庫使用者名稱。 UC_DB

springboot系列三、spirngboot配置檔案

一、配置檔案 SpringBoot使用一個全域性的配置檔案,配置檔名是固定的,配置檔案主要分為以下兩種 •applicati

Vueaxios的使用技巧配置

www 模塊 模擬 傳遞 all 字符串 給定 ans 必須 使用axios首先要下載axios模塊包 npm install axios --save 其次需要在使用的文件中引入 import axios from ‘axios‘ 一、調用axio

nginx配置的events

nginx;events;events模塊中包含nginx中所有處理連接的設置. 常用配置項如下events{ use epoll; worker_connections 20000; client_header_buffer_size 4k; open_file_cache max=2000 ina

NVIC配置的分組

級別 響應 搶占 config 數字 clas 分配 們的 部分 在配置優先級的時候,要註意一個很重要的問題,中斷種類的數量。    NVIC只可以配置 16 種 中斷向量的優先級,也就是說,搶占優先級和響應優先 級的數量由一個 4 位的數字來決定, 把這個

Sping框架的註解

例子 上下 troy getbean 用戶id 查找 oge 數據庫 配置 傳統的Spring做法是使用.xml文件來對bean進行註入或者是配置aop、事物,這麽做有兩個缺點:1、如果所有的內容都配置在.xml文件中,那麽.xml文件將會十分龐大;如果按需求分開.xml文

struts2 配置檔案各個項

<action   name= "Login_* "   method= "{1} "   class= "mailreader2.Login "> 中Login_*帶*是什麼意思?method= "{1} "帶{}這個是什麼意

Dockerredis容器的主從、持久化配置)(第二篇)(共五篇)

關於redis的介紹 redis是k-v型nosql資料庫,支援字串(string)、列表(list)、集合(set)、雜湊(hash)、有序集合(zset:形如member:score的雜湊集合,其中member為成員,score為成員得分,必須為float型資料)。 綜合使用redis的

使用Docker實現MySql資料庫在容器的主從配置

使用Docker容器搭建MySql主從複製 關於如何建立映象,我的部落格中有詳細的步驟文件 檢視容器ip命令為docker inspect 96fd[id前四位] Master_mysql_ip_172.17.0.4 slave_mysql_ip_172.17.0.5 1.docker上面尋

轉:ssm spring+springmvc+mybatis的xml配置檔案

這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首先   這篇文章暫時只對框架中所要用到的配

Spring Boot使用MyBatis註解配置開發

Spring Boot中使用MyBatis註解配置詳解 原創   2018-04-03 宗野       Spring Boot 最近專案原因可能會繼續開始使用

AndroidJNI使用(2)---Android StudioNDK環境配置

Android Studio中的NDK環境配置 1、下載NKD 在Android Studio中選擇File----Settings----Appearance&Behavior---System Settings----Andr

AndroidJNI使用(1)---EclipseNDK配置So檔案生成

1、NDK下載和配置 NDK下載地址:http://www.androiddevtools.cn/ NDK下載完成後,選擇Eclipse上方Window選單Preferences - Android - NDK 在NDK&nb

struts2struts.xml配置檔案

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://st

log4j2.x配置檔案各標籤

log4j2.0以後我們通常在log4j2.xml中配置相關引數,在配置的時候我們需要理解這些引數的具體含義,下面列出了這些引數的解釋。 1、Logger 完成日誌資訊的處理 <logger name="com.srd.ljzd" level="I

mybatis之mybatis-config.xml 配置的標籤

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-con

struts2入門 struts2struts.xml配置檔案

一、struts2的功能 Struts2是一個優秀的MVC框架,大大降低了各個層之間的耦合度,具有很好的擴充套件性。 傳統的servlet + jsp實現了MVC架構,其執行機制是:jsp頁面(檢視view)傳送訊息到servlet(控制器Controller),servlet獲取請求資料,處理業務邏輯,

struts2的web.xml配置檔案

  web.xml 在Web應用程式描述符檔案表示Java Web應用程式的核心,它也是Struts框架的核心的一部分。在web.xml檔案中,Struts的定義其FilterDispatcher,在Servlet過濾器類初始化Struts框架和處理所有的請求。