1. 程式人生 > >Spring基於xml的構造方法注入&setter注入

Spring基於xml的構造方法注入&setter注入

http://blog.csdn.net/weixin_36146275/article/details/62888672

Spring的依賴注入分為:介面注入、構造方法注入、setter注入。

本篇部落格實現後兩種依賴注入方法——基於xml的構造方法注入與setter注入。

使用Spring框架需要使用5個依賴架包:beans、context、core、expression、logging


這裡博主提供jar包的下載地址:【http://pan.baidu.com/s/1bpahZiB】

一、構造方法注入

此節需要用到三個類:User類,Test測試類,application.xml配置檔案

User類:有id、name、age三個欄位,並設定3個欄位的setterAndGetter方法,並且建立帶有id與name,name與age欄位的構造方法

建立構造方法的快捷方式:在程式碼編輯框處右擊→source→generate construct using fieds.在選擇框中再選中需要的引數點選OK就建立好了。

專案結構如下:


1)User類:

[java] view plain copy  print?
  1. /** 
  2.  * 構造方法注入: 
  3.  * 1、為欄位生成setterAndGetter方法 
  4.  * 2、再為User構造兩個方法,傳參分別是【id、name】【name、age】
     
  5.  * 3、右擊→source→generate toString()方法,作測試用。toString()方法可以輸出User類所有欄位值 
  6.  * @author Administrator 
  7.  * 
  8.  */
  9. publicclass User {  
  10.     private Integer id;  
  11.     private String name;  
  12.     private Integer age;  
  13.     public User(Integer id, String name) {  
  14.         super();  
  15.         this.id = id;  
  16.         this.name = name;  
  17.     }  
  18.     public User(String name, Integer age) {  
  19.         super();  
  20.         this.name = name;  
  21.         this.age = age;  
  22.     }  
  23.     public Integer getId() {  
  24.         return id;  
  25.     }  
  26.     publicvoid setId(Integer id) {  
  27.         this.id = id;  
  28.     }  
  29.     public String getName() {  
  30.         return name;  
  31.     }  
  32.     publicvoid setName(String name) {  
  33.         this.name = name;  
  34.     }  
  35.     public Integer getAge() {  
  36.         return age;  
  37.     }  
  38.     publicvoid setAge(Integer age) {  
  39.         this.age = age;  
  40.     }  
  41.     @Override
  42.     public String toString() {  
  43.         return"User [id=" + id + ", name=" + name + ", age=" + age + "]";  
  44.     }  
  45. }  
2)配置application.xml檔案:

我們約定俗成把配置檔案命名為application.xml,也有一些人會命名為beans.xml。

2.1)new一個application.xml檔案:

[java] view plain copy  print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans
  5.         http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. </beans>  

beans中的內容是我到spring官網copy過來的

【http://docs.spring.io/spring/docs/5.0.0.M5/spring-framework-reference/htmlsingle/#beans-factory-class】

開啟網頁後【ctrl+f】搜尋【daos.xml】就可以copy了,copy過來會報錯,因為缺少beans的結束標籤</beans>,新增上就ok了


2.2)把User類配置給Spring管理

<bean>標籤的class屬性值要指定目標類,即需要給Spring管理的類。

class="全限定類名"

獲取方法:


[java] view plain copy  print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans
  5.         http://www.springframework.org/schema/beans/spring-beans.xsd">
  6.     <!-- 構造方法注入 -->  
  7.     <bean id="userId"class="com.demo.User">  
  8.         <constructor-arg index="0" type="java.lang.Integer" value="9527"></constructor-arg>   
  9.         <constructor-arg index="1" type="java.lang.String" value="周星星"></constructor-arg>  
  10.     </bean>  
  11. </beans>  
id:任意命名,要易於區分

class:要被spring管理的類,【class="包名.類名"】

<constructor-arg>標籤:顧名思義就是"構造方法的引數"

index:構造方法引數所在位置的索引值

type:引數的型別

value:為引數賦值

到這裡就完成了Spring管理User類的配置。

3)驗證User類是否已經被Spring管理

new一個TestIOC測試類:@Test註解的意思是使用 JUnit 測試工具,具體的使用方法,這裡不做細說

使用@Test 的原因是方便做測試,不用寫main方法。

[java] view plain copy  print?
  1. import org.junit.Test;  
  2. import org.springframework.context.ApplicationContext;  
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4. /** 
  5.  * 功能: 
  6.  * 測試Spring是否已經管理User類 
  7.  * @author Administrator 
  8.  * 
  9.  */
  10. publicclass TestIoc {  
  11.     @Test
  12.     publicvoid demo01(){  
  13.         //spring工廠,載入xml配置檔案
  14.         String xmlPath = "com/demo/application.xml";  
  15.         ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);  
  16. 相關推薦

    spring基於 XML 構造注入

    值傳遞 <constructor-arg value="value"> </constructor-arg> 引用Bean <constructor-arg ref

    Spring基於xml構造方法注入&setter注入

    http://blog.csdn.net/weixin_36146275/article/details/62888672 Spring的依賴注入分為:介面注入、構造方法注入、setter注入。 本篇部落格實現後兩種依賴注入方法——基於xml的構造方法

    spring基於XML屬性Set方法注入

    引用Bean Set程式碼: public void setPeople(People param) { people = param; } XML程式碼: <property n

    Spring 基於 XML 的 IOC依賴注入的 細節[掌握哦!!!

    Spring之 IOC的繼續—bean標籤 --依賴注入 DI— 02 BeanFactory 和 ApplicationContext 的區別 BeanFactory 才是 Spring 容器中的頂層介面。ApplicationContext 是它的子介面。BeanFactory 和

    基於xml的兩種依賴注入方式(建構函式注入setter注入

    概述 Spring中依賴注入dependency injection(DI)一般來說有兩種形式: 1)基於xml的依賴注入, 2)基於註解的依賴注入。 基於xml的依賴注入方式通常又可以分為:1)建構函式方式注入。2)setter方式注入。 環境 Spring4.3.9

    SpringXML配置Bean的屬性注入

        Spring中XML檔案配置Bean的簡單示例,如下: <bean id="car" class="com.smart.ditype.Car"> <property name="color"> <value>紅色&

    Spring基於註解 的IOC的依賴注入

    新建 project maven## 標題 初識 註解的 開發 是:將 熟悉的 xml 結合的 完成學習的 –>(需要官方的文件支援 沒有:不能執行) 》AOPjar包 的 -----xml 的配置–告知Spring要掃描的 包 xml 約束 檔案 ----

    基於XML的 引用型別自動注入(個人筆記)

    對於引用型別的屬性的自動注入: 對於引用型別屬性的注入,也可以不在配置檔案中顯示注入。也可以通過標籤設定autowire屬性值,為引用型別屬性進行隱式自動注入(預設是不自動注入的引用型別) 根據自動注入判斷標準不同,可以分為兩種: byName: 根據名稱自動注

    spring IoC---XML配置方式的依賴注入

    一、名詞解釋: IoC(Inversion of Control):控制反轉 DI(Dependency Injection):依賴注入 我們常說的依賴注入和控制反轉在spring中是同等概念,控制反轉是由依賴注入實現的。所謂依賴注入是指容器負責建立物件和維護物件間的依賴關係,而不是通過物件本身負責自己

    spring專案中靜態方法中使用注入的bean

    1. 說明: 專案中涉及到dubbo服務,在專案中需要將這個服務作為一個bean注入,由於本人需要在靜態方法中使用這個bean,所以如果使用類似@Autowire等註解注入時會編譯報錯。 2. 解決方法: 自己寫一個工具類,通過spring上下文獲取這個bean。轉成靜態

    [Js-Spring]基於 XML 的 DI

    byname org ray height 必須 imp 其他 image sch 註入分類 (1)設值註入:先調用 Bean 的無參構造函數,然後通過 setter 方法傳入被調用者的實例。 <!-- bean definitions here --> &l

    Spring 基於xml配置方式的AOP(8)

    復制 calc owin img add ann frame proc message 1、ArithmeticCalculator.java 1 package com.proc; 2 3 public interface ArithmeticCalculator

    Spring-Kafka XML配置方法實現生產和消費

      Spring-Kafka XML配置方法實現生產和消費  1. 生產者配置xml Step1:producerProperties:設定生產者公產需要的配置 ; Step2:producerFactory:定義了生產者工廠構造方法

    spring基於xml的宣告式事務控制的使用步驟

    * spring宣告式事務管理引入的原因: 之前對事務的控制是用的動態代理,然後引入到AOP中配置這些事務管理的類,但都是我們手寫的。     其實spring內部已經寫好這些程式碼,這樣做就是為了引入宣告式事務管理, * spring中基於xml的宣告式事務控制步驟:   

    spring基於xml的事務配置方式

    配置步驟 一、配置事務管理器 1.在Bean配置檔案中配置事務管理器。 2.需要注入資料來源。 3.舉個例子: <!-- 配置事務管理器 --> <bean id="transactionManager" class="org.springf

    Spring基於XML方式的使用

    一、IoC配置 IoC的配置是通過Spring的xml檔案的bean標籤進行的。 1、bean標籤介紹 bean標籤一般是在xml檔案進行配置的,xml檔案一般樣式如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt

    Spring基於XML方式配置事務

    配置步驟 ###一、配置事務管理器### 在Bean配置檔案中配置事務管理器。 需要注入資料來源。 舉個例子: <!-- 配置事務管理器 --> <bean id="transactionManager" class="org.sprin

    JavaEE--spring-AOP介紹及spring基於XML的AOP配置

    AOP即面向切面程式設計技術,AOP能夠剖開封裝的物件內部,並將那些影響了多個類並且與具體業務無關的公共行為封裝成一個獨立的模組。在執行時通過動態代理技術或者是在程式編譯期間進行靜態的"織入"方式。用大白話來說:就是我們把程式中重複的程式碼抽取出來,在它需要被執行的時候,通過

    Spring 基於XML配置

    ide 文檔 聲明 不同 schema 很好 ng2 補全 解析器 基於XML的配置 對於基於XML的配置,Spring 1.0的配置文件采用DTD格式,Spring2.0以後采用Schema格式,後者讓不同類型的配罝擁有了自己的命名空間,使得配置文件更具擴展性。此外,Sp

    Spring的兩種依賴注入方式:setter方法注入構造方法注入

       Spring的兩種依賴注入方式:setter注入與構造方法注入,這兩種方法的不同主要就是在xml檔案下對應使用property和constructor-arg屬性, 例如: property屬