天天看點

spring使用注解方式完成IOC和AOP功能

前言

控制反轉依賴注入(IOC)及AOP是spring的核心功能,spring使用xml檔案完成配置,基本上已經廢棄,目前主流的是使用注解的方式完成這兩項功能。以下通過示例,示範注解的方式,實作IOC和AOP。

建立maven工程

spring使用注解方式完成IOC和AOP功能

輸入工程名稱,完成工程建立。打開pom檔案,加入spring依賴包

spring使用注解方式完成IOC和AOP功能

在main目錄下加入resource檔案夾,并将其設定為Resources Root

spring使用注解方式完成IOC和AOP功能

在resources檔案夾下,建立spring配置檔案,applicationContext.xml

spring使用注解方式完成IOC和AOP功能

IOC代碼編寫

在com.bjwl下建立services包,添加CustomerService接口和CustomerServiceImpl實作類,目錄結構如下圖所示

spring使用注解方式完成IOC和AOP功能

其中,CustomerServiceImpl實作代碼如下:

spring使用注解方式完成IOC和AOP功能

劃線部分就是對應的注解。

告訴spring容器,需要進入容器的類。修改applicationContext.xml檔案,修改内容如下:

spring使用注解方式完成IOC和AOP功能

此時,idea會提示需要加入context依賴包,根據提示,alt+enter即可

IOC測試

打開CustomerServiceImpl類檔案,使用菜單(見下圖)或快捷鍵Ctrl+Shift+T,建立測試類

spring使用注解方式完成IOC和AOP功能
spring使用注解方式完成IOC和AOP功能

寫測試代碼如下:

spring使用注解方式完成IOC和AOP功能

點選play()前綠色按鈕運作,執行結果如下:

spring使用注解方式完成IOC和AOP功能

反思:已經完成依賴注入的功能,這樣我門的調用方與其依賴的對象呈現松耦合,調用方測似類中使用接口完成對象的定義,如果使用者的業務發生變化時,我們僅需要新增一個實作CustomerService接口的類,将注解更改到新擴充的類上即可完成更改,符合開閉原則

AOP示例代碼編寫

建立包aspect,添加類log如下圖:

spring使用注解方式完成IOC和AOP功能

如果遇到以下情況

spring使用注解方式完成IOC和AOP功能

點選圖中依賴包,由maven自動添加

spring使用注解方式完成IOC和AOP功能

修改配置檔案applicationContext.xml檔案,添加AOP配置,如下圖

spring使用注解方式完成IOC和AOP功能

程式開發完成,進入測試

AOP測試

添加測試類,代碼如下:

spring使用注解方式完成IOC和AOP功能

運作,結果如下:

spring使用注解方式完成IOC和AOP功能

測試類另外一種寫法,如下圖所示

spring使用注解方式完成IOC和AOP功能

執行效果同第一種測試方法。特别注意pom檔案中Spring的包和Spring-text包版本一緻

否則報:“java.lang.NoSuchMethodError: org.springframework.util.Assert.notNull”

spring使用注解方式完成IOC和AOP功能

結論

注解的方式是目前主流的使用方式。在示例的編寫中maven的使用,幫助我們下載下傳所依賴的jar包,提供了很大的便利