天天看點

IoC(Inverse of Control:控制反轉)

一:IOC的了解

IoC(Inverse of Control:控制反轉)是一種設計思想,就是将原本在程式中手動建立對象的控制權,交由Spring架構來管理。IOC思想是基于IOC容器來完成的,IOC容器底層就是對象工廠(BeanFactory接口)。IOC的原理是基于xml解析、工廠設計模式、反射來實作的。 IoC 容器實際上就是個Map(key,value)Map 中存放的是各種對象。

通俗易懂的一句話結論:之前需要我們自己手動new對象的,但是我們現在不需要反複去new對象了,而是把new對象的主動權交給IOC容器,我們什麼時候用什麼時候取就可以了。

二:IoC入門案例

IoC(Inverse of Control:控制反轉)

1. 導入Spring坐标spring-context

IoC(Inverse of Control:控制反轉)

2. 配置bean

①.bean标簽表示配置bean

②.id屬性表示給bean起名字

③.class屬性表示給bean定義類型

IoC(Inverse of Control:控制反轉)

3.擷取IOC容器

ApplicationContext ctx = new ClassPathXmlApplicationContext("user.xml");
           

4.擷取bean

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

成功調用User中add的方法

IoC(Inverse of Control:控制反轉)
IoC(Inverse of Control:控制反轉)

三:DI入門案例

IoC(Inverse of Control:控制反轉)

1.删除使用new的形式建立對象的代碼

IoC(Inverse of Control:控制反轉)

2.提供依賴對象對應的setter方法

IoC(Inverse of Control:控制反轉)

3.配置service與dao之間的關系

IoC(Inverse of Control:控制反轉)

二:AOP的了解

AOP(Aspect-Oriented Programming:面向切面程式設計)AOP代表的是一個橫向的關系,剖開對象的内部,并且把影響多個類的共同行為抽取出來,作為公共子產品(叫做切面Aspect),然後再通過織入的方式把這個切面放進去。了解來說:就是能夠将那些與業務無關,卻為業務子產品所共同調用的邏輯或責任(例如事務處理、日志管理、權限控制等)封裝起來,便于減少系統的重複代碼,降低子產品間的耦合度,并有利于未來的可拓展性和可維護性。

通俗易懂的一句話結論:就是不通過修改源代碼方式,在主幹功能裡面添加新功能。

AOP底層是通過動态代理來實作的,同時有JDK動态代理和CGLIB動态代理兩種方式:

1.有接口的情況,使用 JDK 動态代理,即建立接口實作類代理對象,增強類的方法。

    2.沒有接口的情況,使用 CGLIB 動态代理,即建立子類的代理對象,增強類的方法。
           

AOP的專業術語

1.Advice (增強/通知) 表示需要擴充的功能,所在的類叫做增強類/通知類。

    2.JoinPoint(連接配接點)程式執行的某個特定位置

    3.PointCut(切入點)AOP 通過切點來定位特定的連接配接點

    4.Aspect(切面)切面由切點和增強組成,他既包含橫切的定義,也包括了連接配接點的定義。 springAOP就是負責實施切面的架構,他将切面定義為橫切邏輯織入到切面所指定的連接配接點。

    5.織入(weaving) 就是把Advice添加到目标類的連接配接點的過程

    6.目标對象 顧名思義:要增強到具體的對象