1. 程式人生 > >Spring——控制反轉(IOC)和麵向切面(AOP)

Spring——控制反轉(IOC)和麵向切面(AOP)

可以將所有的物件建立和依賴關係維護交給Spring管理的AOP程式設計支援

Spring 提供的切面程式設計可以方便的實現對程式進行許可權攔截,執行監控等宣告式事物的支援。

Spring支援Junit4,方便測試。

IOC的底層實現原理

IOC將物件的建立權反轉給Spring,實現程式的解耦合。

spring是輕量級開源框架

 spring核心有兩部分:

1)控制反轉 ioc

* 比如現在有普通類,在這個類裡面有普通的方法,呼叫這個類裡面的普通的方法,需要建立類物件,使用物件呼叫方法。

* 建立類的物件,使用原始方式new物件。使用ioc實現物件建立,不需要手動new

物件,通過配置檔案方式建立物件

** 把物件建立交給spring配置

2)面向切面 aop

* 不通過修改原始碼方式增強類裡面的方法

* aop底層動態代理

 spring是一站式框架

1spring針對javaee三層,在每一層提供解決技術

* web層:springMVC

* service:  spring ioc

* dao層:spring jdbcTemplate

ioc稱為控制反轉,把物件建立不是new出來,而是在spring使用配置方式建立

 IOC入門案例

1 建立普通類,在這個類裡面建立普通的方法,呼叫類裡面的方法

第一步

匯入spring相關jar

1)使用spring框架,核心有四個部分(四個jar包)

* beansspring配置檔案相關配置

* core:核心部分

* contextspring註解

* SpEL : spring表示式

 

第二步建立類,建立普通的方法

第三步建立spring配置檔案,配置user物件建立

 

spring配置檔案配置物件

<!-- 配置user物件

       id: 根據id值獲取物件

       class: 要建立物件所在類全路徑

    -->

<beanid="user"class="cn.itcast.ioctest.User"></bean>

第四步測試如何獲取配置出來的user物件

@Test

publicvoid testUser() {

//1 載入spring配置檔案

/*

        * 載入spring配置檔案,把配置物件建立

        * */

       ApplicationContext context =

new ClassPathXmlApplicationContext("bean1.xml");

//2 根據id值獲取物件

//     User user1 = context.getBean("user",User.class);

       User user = (User) context.getBean("user");

       System.out.println(user);

user.add();

    }

Spring的bean管理(xml方式)

什麼是bean管理

兩個操作:

1)建立物件(bean例項化)

2)設定類裡面屬性值(注入屬性)

springbean管理有兩種方式

1)基於xml配置檔案方式

2)基於註解方式

1 spring裡面通過配置檔案建立物件

1)建立物件操作

2 bean例項化(建立物件)三種方式實現

第一種使用類的無引數構造建立(重點)

第二種使用靜態工廠建立(瞭解)

1)建立靜態的方法,返回類物件

第三種使用例項工廠建立(瞭解)

1)建立不是靜態的方法,返回類物件

bean標籤常用屬性

1 id屬性

1)根據id屬性值獲取物件

2)在一個spring配置檔案中,可以有多個bean標籤,但是bean標籤id屬性值不同

2 class屬性

1)類的全路徑

3 name屬性

1name屬性作用和id屬性一樣的

2id屬性值裡面不能包含特殊符號的

3name屬性值可以包含特殊符號  /user

4 scope屬性

1)主要作用:配置建立物件是單例項還是多例項物件

2)屬性值:

* 預設值,singleton,表示單例項物件

* prototype,表示多例項物件

** action是多例項物件

request:把建立物件放到request裡面

session:把建立物件放到session裡面

globalSession:把建立物件放到globalSession裡面

** 單點登入

spring配置檔案在伺服器啟動時候載入最合適,建立物件

底層原理:

* ServletContext物件:當伺服器啟動時候,每個專案有一個ServletContext物件,是整個web專案範圍的域物件

* 監聽器:監聽ServletContext物件建立和銷燬

2)在開發中,一般讓配置檔案在伺服器啟動時候載入,把配置檔案中物件建立

Bean生命週期配置(瞭解)

1 建立servlet時候,執行init方法

2 銷燬servlet時候,執行destory方法

屬性注入介紹

1 在類裡面有屬性,向類裡面屬性中設定值,這個過程稱為屬性注入

2 向類裡面屬性中設定值,在java程式碼中有三種方式實現

3 spring框架裡面支援是set方法注入和有引數構造注入

1)常用set方法注入

使用有引數構造注入

1 建立類,定義屬性,生成有引數構造

/**

 * 有引數構造注入

 * @author asus

 *

 */

publicclass Book {

private String bname;

private String author;

//生成有引數構造

public Book(String bname, String author) {

this.bname = bname;

this.author = author;

    }

publicvoid add() {

       System.out.println("book:"+bname+"::"+author);

    }

}

2 配置屬性注入

<!-- 使用有引數構造注入 -->

<beanid="book"class="cn.itcast.attr.Book">

<!-- 體現有引數構造

           name: 屬性名稱

           value:設定值

       -->

<constructor-argname="bname"value="易筋經"></constructor-arg>

<constructor-argname="author"value="小王"></constructor-arg>

</bean>

使用set方法注入(重點)

1 建立類,定義屬性,生成屬性set方法

/**

 * set方法注入

 * @author asus

 *

 */

publicclass Orders {

private String oname;

private String oaddress;

//生成set方法

publicvoid setOname(String oname) {

this.oname = oname;

    }

publicvoid setOaddress(String oaddress) {

this.oaddress = oaddress;

    }

publicvoid add() {

       System.out.println("orders:"+oname+"::"+oaddress);

    }

}

2 配置屬性注入

<!-- set方法注入 -->

<beanid="orders"class="cn.itcast.attr.Orders">

<!-- name: 屬性名稱

           value:設定值 -->

<propertyname="oname"value="洗髓經"></property>

<propertyname="oaddress"value="嵩山"></property>

</bean>

注入物件型別屬性(重點)

第一步service定義dao型別屬性

publicclass UserService {

//目的:在service獲取dao物件

//dao物件注入到service

//1 定義UserDao型別屬性

private UserDao userDao;

//2 生成set方法

publicvoid setUserDao(UserDao userDao) {

this.userDao = userDao;

    }

第二步實現配置

p名稱空間注入(瞭解)

1 引入p名稱空間

2 配置檔案中,使用名稱空間注入屬性

1spring2.x以下版本,不能使用p名稱空間注入

spring分模組配置開發

1 在程式碼裡面載入配置時候時候,引入多個配置檔案

2 在配置檔案引入其他spring配置檔案

注入複雜型別屬性(會用)

1 陣列

2 List集合

3 Map集合

4 Properties

/**

 * 複雜型別屬性

 * @author asus

 *

 */

publicclass Customer {

//定義屬性

private String[] arrs;

private List<String> list;

private Map<String,String> map;

private Properties properties;

//set方法

publicvoid setArrs(String[] arrs) {

this.arrs = arrs;

    }

publicvoid setList(List<String> list) {

this.list = list;

    }

publicvoid setMap(Map<String, String> map) {

this.map = map;

    }

publicvoid setProperties(Properties properties) {

this.properties = properties;

    }

publicvoid find() {

       System.out.println("arrs: "+Arrays.toString(arrs));

       System.out.println("list: "+list);

       System.out.println("map: "+map);

       System.out.println("properties: "+properties);

    }

}

<beanid="customer"class="cn.itcast.attr.Customer">

<!-- 陣列 -->

<propertyname="arrs">

<list>

<value>lucy</value>

<value>mary</value>

<value>jack</value>

</list>

</property>

<!-- list -->

<propertyname="list">

<list>

<value>小王</value>

<value>小金</value>

<value>小奧</value>

</list>

</property>

<!-- map-->

<propertyname="map">

<map>

<

相關推薦

spring控制反轉(IoC)和麵切面(AOP)的容器框架

什麼是spring,它能夠做什麼? Spring是一個開源框架,它由Rod Johnson建立。它是為了解決企業應用開發的複雜性而建立的。 Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。 然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性

Spring——控制反轉(IOC)和麵切面(AOP)

可以將所有的物件建立和依賴關係維護交給Spring管理的AOP程式設計支援 Spring 提供的切面程式設計可以方便的實現對程式進行許可權攔截,執行監控等宣告式事物的支援。 Spring支援Junit4,方便測試。 IOC的底層實現原理 IOC將物件的建立權反轉給Sp

Spring學習,依賴注入(DI)、控制反轉(IoC)和麵切面(AOP)

依賴注入(DI)和控制反轉(IoC) 在日常編碼中經常遇到在一個類中呼叫另一個類的多個方法,所以就在一個類中new出需要用到的類,也就是組合模式。比如說A類裡面需要用到很多B類裡面的方法,所以要在A類裡面new一個B。 public class

筆記——spring基本使用(控制反轉IOC、面向切面程式設計AOP、宣告式事務,事務隔離級別、事務傳播)

spring溫習筆記 Spring是一個開放原始碼的設計層面框架,他解決的是業務邏輯層和其他各層的鬆耦合問題,因此它將面向介面的程式設計思想貫穿整個系統應用。 Spring 的控制反轉IOC、面向切面程式設計AOP等特性不多說。 本文核心內容:搭建一個Spring Dem

Spring 控制反轉(IOC) | 依賴注入(DI)的解析

學習過Spring框架的人一定都會聽過Spring的IoC(控制反轉) 、DI(依賴注入)這兩個概念,對於初學Spring的人來說,總覺得IoC 、DI這兩個概念是模糊不清的,是很難理解的,今天和大家分享網上的一些技術大牛們對Spring框架的IOC的理解以及談談我對Spri

Spring控制反轉IoC和麵切面程式設計(AOP)的概念淺析。

轉自:http://baike.baidu.com/link?url=BhIdxXwp9Xs7PjzebLL8sisJrgh0MiLUB2clkgpf-rpyexxlKTOXDDCxmX1MYe4qenJ9sfcLUw9gQWZJj9oMw_ 控制反轉——Spring通

JavaEE框架——Spring入門基礎(控制反轉Ioc切面技術Aop

一.簡介: Spring在英語中含義是春天,對於JavaEE開發者來說,Spring框架出現確實帶來了一股全新的春天的氣息。早在2002年,Rod Johson在其編著的《Expert one to one J2EE design anddevelopment》書中,對J

我的控制反轉,依賴注入和麵切面程式設計的理解

1.什麼是控制? 如下圖所示,我們看到了 軟體系統中 物件的 高耦合現象。全體齒輪的轉動由一個物件來控制,如類B。 2.什麼是 控制反轉? 是用來對物件進行解耦。藉助第三方實現具有依賴關係的

spring(3)------控制反轉(IOC)/依賴註入(DI)

param mls 構造 上下文環境 麻煩 framework 中文 回調接口 可能 一。spring核心概念理解 控制反轉: 控制反轉即IoC (Inversion of Control)。它把傳統上由程序代碼直接操控的對象的調用權交給容器。通過容器來實現

Spring控制反轉IOC和依賴注入DI

首先想說說IoC(Inversion of Control,控制反轉)。這是spring的核心,貫穿始終。所謂IoC,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係: 誰控制誰,控制什麼:傳統Java SE程式設計,我們直接在物件內部通過new進行

spring系統學習之控制反轉 ioc

  這學期的課程安排,我們可以系統的學習spring框架了。  相比較自己看部落格筆記,系統的在課堂上學習還是很有必要。   spring是一個開源框架,是為了解決企業應用程式開發複雜性而建立的。 框架的主要優勢之一就是利用其分層架構。 分層架構允許選擇使用哪一個元件,同時

深入理解spring容器中的控制反轉(IOC)和依賴注入(DI)

首先在開篇之前我們一定一定要明確的就是:DI和IOC並不是兩個概念,DI是IOC思想在應用上的具體例子。 什麼是控制反轉(IOC)? “控制”就是指一件事物對另一件事物進行一種管理,而另一件事物處在一件事物的管理之下,這就叫控制。 在面向物件程式設計的時候,每一個程式的

也談Spring之依賴注入DI/控制反轉IOC

首先提問, 什麼是 Spring IOC 容器?         Spring 框架的核心是 Spring 容器。容器建立物件,將它們裝配在一起,配置它們並管理它們的完整生命週期。Spring 容器使用依賴注入來管理組成應用程式的元件。容器通過讀取提供的配置元資料來接收物件

Spring 依賴倒轉和麵切面程式設計的理解

控制反轉(IOC)實際上由Spring容器實現程式碼對程式設計師的解耦,不再由程式設計師來例項化物件而是由Spring容器來管理呼叫物件。 依賴注入的思想是這樣,當一個類對另一個類有依賴時,不再該類內部對依賴的類進行例項化,而是由容器自動注入一個所依賴的類的例項。 面向切面程式設計:就是將公

控制反轉IOC的依賴注入方式 【調侃】IOC前世今生 IoC模式 談談對Spring IOC的理解 一個簡單的小程式演示Unity的三種依賴注入方式 小菜學習設計模式(五)—控制反轉IocIoC模式(依賴、依賴倒置、依賴注入、控制反轉IoC模式

轉自:https://www.cnblogs.com/ysyn/p/5563256.html 引言:    專案中遇到關於IOC的一些內容,因為和正常的邏輯程式碼比較起來,IOC有點反常。因此本文記錄IOC的一些基礎知識,並附有相應的簡單例項,而在實際專案中再複雜的應用也只是在

Spring框架學習筆記(1)——控制反轉IOC與依賴注入DI

Spring框架的主要作用,就是提供了一個容器,使用該容器就可以建立並管理物件。比如說Dao類等,又或者是具有多依賴關係的類(Student類中包含有Teacher類的成員變數) Spring有兩個核心概念,一個是控制反轉(IOC,全稱為Inverse of Control),另一個則是面向切面程式設計(AO

Spring基礎(一)_控制反轉(IOC)

Spring-IOC 1、簡述 1.1 依賴注入DI 現實開發中,每一個應用都會由兩個或多個類組成,這些類之間相互協作完成特定的業務邏輯。根據傳統做法,每個物件負責管理與自己協作的物件的引用(也就是,每個物件中使用new例項化物件的方式建立協作的物件)——這將導致==高度耦合和難以測試的程式碼==。 publ

Spring控制反轉的最簡單說明

說明 實例化 一個 XML 處理 當前 現在 兩個 角色 現有角色如下: 一個接口Interface,兩個接口實現類InstatnceA、InstanceB,一個調用類User。 已有代碼如下: User類中實例化了一個InstatnceA對象,代碼如:Interface

PHP 依賴註入(DI) 和 控制反轉(IoC)

常見 業務 cin org body pac register resolve 避免 要想理解 PHP 依賴註入 和 控制反轉 兩個概念,就必須搞清楚如下的兩個問題: DI —— Dependency Injection 依賴註入 IoC —— Inversion of

依賴耦合、解耦、控制反轉(IOC)、依賴註入

增加 clas 說明 class a lan xxx ron pen pub 隨著net的深入學習,出現了很多概念性的東西需要理解,現在統一記錄一下。 1.依賴:現階段在任何一個有請求作用的系統,都會出現A類調用B類的情況,這時候A類就依賴於B類,A類和B類存在依賴關系。