国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring 的基本應用——IoC 和 AOP

DirtyMind / 3016人閱讀

摘要:的兩大核心機制是控制反轉和面向切面編程,對于初學者來講,搞清楚這兩個核心機制就掌握了的基本應用。配置對象張三添加標簽對應屬性名,是屬性的值。若包含特殊字符,比如張三,使用張三進行配置,如下所示。

前言

對于任何一個 Java 開發人員,Spring 的大名一定如雷貫耳,在行業中可謂是無人不知、無人不曉,說它是 Java 領域第一框架毫不為過。


(圖片來自 Spring 官網)

Spring 概念誕生于 2002 年,創始人 Rod Jahnson 在其著作《Expert One-on-One J2EE Design and Development》中第一次提出了 Spring 的核心思想,于 2003 年正式發布第一個版本 Spring Framework 0.9。

經過十幾年的優化迭代,Spring Framework 已經從最初的取代 EJB 框架逐步發展為一套完整的生態,最新的版本是 5.X,支持現代 Java 開發的各個技術領域,家族兩大核心成員 Spring Boot 和 Spring Cloud 更是當下 Java 領域最為熱門的技術棧。

毋庸置疑,Spring 已經成為 Java 開發的行業標準,無論你是初級程序員還是架構師,只要是做 Java 開發的,工作中或多或少一定會接觸到 Spring 相關技術棧。

我們所說的 Spring 全家桶各個模塊都是基于 Spring Framework 衍生而來,通常所說的 Spring 框架一般泛指 Spring Framework,它包含 IoC 控制反轉、DI 依賴注入、AOP 面向切面編程、Context 上下文、bean 管理、Spring Web MVC 等眾多功能模塊,其他的 Spring 家族成員都需要依賴 Spring Framework。

可以簡單理解 Spring Framework 是一個設計層面的框架,通過分層思想來實現組件之間的解耦合,開發者可以根據需求選擇不同的組件,并且可以非常方便的進行集成,Spring Framework 的這一特性使得企業級項目開發變得更加簡單方便。

Spring 的兩大核心機制是 IoC(控制反轉)和 AOP(面向切面編程),對于初學者來講,搞清楚這兩個核心機制就掌握了 Spring 的基本應用。這兩大核心機制也是 Java 設計模式的典型代表,其中 IoC 是工廠模式,AOP 是代理模式。

點擊這里了解《案例上手 Spring 全家桶》
什么是 IoC 和 AOP

下面來詳細了解 IoC,IoC 是 Spring 框架的靈魂,非常重要,理解了 IoC 才能真正掌握 Spring 框架的使用。

IoC 也叫控制反轉,首先從字面意思理解,什么叫控制反轉?反轉的是什么?

在傳統的程序開發中,需要獲取對象時,通常由開發者來手動創建實例化對象,但是在 Spring 框架中創建對象的工作不再由開發者完成,而是交給 IoC 容器來創建,我們直接獲取即可,整個流程完成反轉,因此是控制反轉。

舉個例子:超市購物。

傳統方式:你去超市買東西,需要自己拿著袋子去超市購買商品,然后自己把袋子提回來。

IoC 容器:你只需要把袋子放在家門口,袋子里面會自動裝滿你需要的商品,直接取出來用就可以了。

我們通過創建一個 Student 對象的例子來對比兩種方式的區別。

傳統方式

(1)創建 Student 類

public class Student {
    private int id;
    private String name;
    private int age;
}

(2)測試方法中調用構造函數創建對象

Student student = new Student();
IoC 容器
實現步驟

在 pom.xml 中添加 Spring 依賴

創建配置文件,可以自定義文件名 spring.xml

在 spring.xml 中配置 bean 標簽,IoC 容器通過加載 bean 標簽來創建對象

調用 API 獲取 IoC 創建的對象

IoC 容器可以調用無參構造或者有參構造來創建對象,我們先來看無參構造的方式。

無參構造

配置一個 bean 標簽:

id,對象名

class,對象的模板類

接下來調用 API 獲取對象,Spring 提供了兩種方式來獲取對象:id 或者運行時類。

(1)通過 id 獲取對象

//1.加載 spring.xml 配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
//2.通過 id 值獲取對象
Student stu = (Student) applicationContext.getBean("stu");
System.out.println(stu);

第一步:加載 spring.xml 配置文件,生成 ApplicationContext 對象。

第二步:調用 ApplicationContext 的 getBean 方法獲取對象,參數為配置文件中的 id 值。程序在加載 spring.xml 時創建 stu 對象,通過反射機制調用無參構造函數,所有要求交給 IoC 容器管理的類必須有無參構造函數。

運行結果如下圖所示。

可以看到,此時 stu 對象的屬性全部為空,因為調用無參構造只會創建對象而不會進行賦值,如何賦值呢?只需要在 spring.xml 中進行相關配置即可,如下所示。



    
    
    

添加 property 標簽:name 對應屬性名,value 是屬性的值。若包含特殊字符,比如 name="<張三>",使用 ]]> 進行配置,如下所示。



   
   
       ]]>
   
   

運行結果如下圖所示。

Spring 通過調用每個屬性的 setter 方法來完成屬性的賦值,因此實體類必須有 setter 方法,否則加載時報錯,getter 方法可省略。

(2)通過運行時類獲取對象

//1.加載 spring.xml 配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
//2.通過運行時類獲取對象
Student stu = applicationContext.getBean(Student.class);
System.out.println(stu);

此方法有一個弊端,當 spring.xml 中配置兩個 Student 的 bean 時程序會拋出異常,因為此時兩個 bean 都是由 Student 類生成的,IoC 容器無法將兩個 bean 都返回,必須指定一個唯一的 bean。


   
   
       ]]>
   
        


   
   
   

異常信息如下圖所示。

以上是 IoC 容器通過無參構造創建對象的方式,同時 IoC 容器也可以調用有參構造來創建對象。

有參構造

(1)在實體類中創建有參構造

public Student(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
}

(2)spring.xml 中進行配置



   
   
   

(3)此時 IoC 容器會根據 constructor-arg 標簽去加載對應的有參構造函數,創建對象并完成屬性賦值。name 的值需要與有參構造的形參名對應,value 是對應的值。除了使用 name 對應參數外,還可以通過下標 index 對應,如下所示。



   
   
   

以上是 IoC 容器通過有參構造創建對象的方式,獲取對象同樣有兩種方式可以選擇:id 和運行時類。

如果 IoC 容器管理多個對象,并且對象之間有級聯關系,如何實現?

(1)創建 Classes 類

public class Classes {
    private int id;
    private String name;
}

(2)在 Student 類中添加 Classes 屬性

public class Student {
    private int id;
    private String name;
    private int age;
    private Classes classes;
}

(3)spring.xml 中配置 classes 對象,然后將該對象賦值給 stu 對象



   
   



   
   
       ]]>
   
   
   
   

再次獲取 Student 對象,結果如下圖所示。

在 spring.xml 中,通過 ref 屬性將其他 bean 賦給當前 bean 對象,這種方式叫做依賴注入(DI),是 Spring 非常重要的機制,DI 是將不同對象進行關聯的一種方式,是 IoC 的具體實現方式,通常 DI 和 IoC 是緊密結合在一起的,因此一般說的 IoC 包括 DI。

如果是集合屬性如何依賴注入?

(1)Classes 類中添加 List 屬性。

public class Classes {
    private int id;
    private String name;
    private List students;
}

(2)spring.xml 中配置 2 個 student 對象、1 個 classes 對象,并將 2 個 student 對象注入到 classes 對象中。



   
   
   
       
       
           
           
       
   


   
   
        ]]>
   
   


   
   
   

運行結果如下圖所示。

集合屬性通過 list 標簽和 ref 標簽完成注入,ref 的 bean 屬性指向需要注入的 bean 對象。

總結

這一講我們講解了 Spring IoC 的基本概念以及如何使用,IoC 是 Spring 的核心,這很重要。使用 Spring 開發項目時,控制層、業務層、DAO 層都是通過 IoC 來完成依賴注入的。

請單擊這里下載源碼

Spring 交流

我們為本課程付費讀者創建了微信交流群,以方便更有針對性地討論課程相關問題。入群方式請到第 1-4 課末尾添加小助手的微信號,并注明「全家桶」。

閱讀文章過程中有任何疑問隨時可以跟其他小伙伴討論,或者直接向作者提問(作者看到后抽空回復)。你的分享不僅幫助他人,更會提升自己。

溫馨提示:需購買才可入群哦,加小助手微信后需要截已購買的圖來驗證~

點擊這里了解《案例上手 Spring 全家桶》

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75837.html

相關文章

  • 慕課網_《Spring入門篇》學習總結

    摘要:入門篇學習總結時間年月日星期三說明本文部分內容均來自慕課網。主要的功能是日志記錄,性能統計,安全控制,事務處理,異常處理等等。 《Spring入門篇》學習總結 時間:2017年1月18日星期三說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學示例源碼:https://github.com/zccodere/s...個人學習源碼:https://git...

    Ververica 評論0 收藏0
  • Spring入門IOCAOP學習筆記

    摘要:入門和學習筆記概述框架的核心有兩個容器作為超級大工廠,負責管理創建所有的對象,這些對象被稱為。中的一些術語切面切面組織多個,放在切面中定義。 Spring入門IOC和AOP學習筆記 概述 Spring框架的核心有兩個: Spring容器作為超級大工廠,負責管理、創建所有的Java對象,這些Java對象被稱為Bean。 Spring容器管理容器中Bean之間的依賴關系,使用一種叫做依賴...

    wenyiweb 評論0 收藏0
  • 面試官:“談談Spring中都用到了那些設計模式?”。

    摘要:會一直完善下去,歡迎建議和指導,同時也歡迎中用到了那些設計模式中用到了那些設計模式這兩個問題,在面試中比較常見。工廠設計模式使用工廠模式可以通過或創建對象。 我自己總結的Java學習的系統知識點以及面試問題,已經開源,目前已經 41k+ Star。會一直完善下去,歡迎建議和指導,同時也歡迎Star: https://github.com/Snailclimb... JDK 中用到了那...

    Astrian 評論0 收藏0
  • Spring框架IOC容器

    摘要:簡單來說,是一個輕量級的控制反轉和面向切面的容器框架。的基本框架主要包含六大模塊。可以與框架整合。在中是容器的實際代表者。依賴注入在容器創建對象后,處理對象的依賴關系。 目錄 1. Spring開源框架的簡介 2. Spring下IOC容器和DI(依賴注入Dependency injection) 一、Spring開源框架的簡介 ??Spring是一個開源框架,也是于2003 年興...

    CoderStudy 評論0 收藏0
  • Spring技術內幕筆記(1):IoCAOP

    摘要:讀取定義的內容,將用戶定義的表示成,是在容器中對的抽象,記錄了配置的信息。的生命周期在初始化后,并沒有被實際的創建。工作過程當目標對象被調用時,會觸發的回調函數進行攔截。 IoC容器的實現 控制反轉(Inversion of Control,縮寫為IoC),是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。 依賴反轉是什么 依賴反轉在Spring中的體現是依賴注入。 ...

    lykops 評論0 收藏0

發表評論

0條評論

DirtyMind

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<