一:IOC的了解
IoC(Inverse of Control:控制反轉)是一種設計思想,就是将原本在程式中手動建立對象的控制權,交由Spring架構來管理。IOC思想是基于IOC容器來完成的,IOC容器底層就是對象工廠(BeanFactory接口)。IOC的原理是基于xml解析、工廠設計模式、反射來實作的。 IoC 容器實際上就是個Map(key,value)Map 中存放的是各種對象。
通俗易懂的一句話結論:之前需要我們自己手動new對象的,但是我們現在不需要反複去new對象了,而是把new對象的主動權交給IOC容器,我們什麼時候用什麼時候取就可以了。
二:IoC入門案例
1. 導入Spring坐标spring-context
2. 配置bean
①.bean标簽表示配置bean
②.id屬性表示給bean起名字
③.class屬性表示給bean定義類型
3.擷取IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("user.xml");
4.擷取bean
User user = (User) ctx.getBean("user");
成功調用User中add的方法
三:DI入門案例
1.删除使用new的形式建立對象的代碼
2.提供依賴對象對應的setter方法
3.配置service與dao之間的關系
二: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.目标對象 顧名思義:要增強到具體的對象