1.1 @Component:組件
- 修飾一個類,將這個類交給Spring來管理
- 該註解有三個衍生註解(功能相似),建議使用
@Controller
:修飾web層的類
@Service
:修飾service層的類
@Repository
:修飾dao層的類
屬性注入的註解
- 普通屬性
- 對象類型屬性
@Autoware
:設置對象類型的屬性值,可是按照類型完成屬性注入,咱們習慣按照名稱完成屬性注入,必須讓該註解與@Qualified
註解一塊兒使用,@Qualified(value="")
傳入具體的名稱
- @Resource : 完成對象類型的屬性注入:按照名稱來完成的屬性,實際開發中常使用,是Spring實現的一套接口規範
Bean的其餘註解
一: 生命週期相關web
- @PostConstruct :初始化方法
- @PreDestroy :銷燬方法
二:Bean的做用範圍註解 @Scope:做用範圍spring
- singleton :默認單例
- prototype :多例
- request :
- session :
- globalsession:
1.2 IOC基於XML配置與註解配置的比較
- 適用場景
- XML: 適用於任何場景,結構清晰維護方便
- 註解:該類不是註解提供的,好比說是源代碼的。開發方便
- XML和註解整合開發
Spring的AOP的XML開發
一:底層實現原理session
- 動態代理
- JDK動態代理 :只能對實現接口的類產生代理
- Cglib動態代理(相似於Javassist第三方代理技術):對於沒有接口的類產生代理,生成子對象
二: JDK動態代理函數
三: Cglib動態代理單元測試
1.3 Spring的AOP開發(AspectJ的XML的方式)
-
引入aop開發相關的jar包 測試
-
引入Spring的配置文件prototype
- 編寫測試類,引入Spring單元測試的jar包
2. 編寫切面類
3. 將切面類交給Spring管理
4. 經過AOP的配置來完成對目標類產生代理
1.4 Spring中的通知類型
1.4.1 前置通知: 在目標方法執行前進行操做
- 得到切入點信息,在代理類MyAspectXML中的checkPri的方法中傳入以下參數,並運行測試類,獲得結果
1.4.2 後置通知: 在目標方法執行以後的操做
1.4.3 環繞通知: 在目標方法執行以前和執行以後進行操做
1.4.4 異常拋出通知: 在程序出現異常的時候,進行的操做
1.4.5 最終通知: 無論代碼有沒有異常,總會執行
14.6 引介通知:
Spring的切入點表達式
- 基於excution的函數完成的
- 語法
- [訪問修飾符] 方法返回值 包名 類名.方法名(參數)
- public void it.spring.demo.CustomerDao.save(..)
- *it.spring.demo.CustomerDao+save(...)