Spring框架宗旨:不重新發(fā)明技術,讓原有的技術使用起來更加方便
Spring三大核心功能
1.IoC/DI 控制反轉 依賴注入
Ioc完成的事情原先由程序員主動通過new實例化對象事情,轉交給Spring負責
控制:控制類的對象
反轉:轉交給Spring負責
最大作用解耦:程序員不需要管理對象,解除了對象管理和程序員之間的耦合
-
AOP 面向切面編程
在原有縱向執(zhí)行流程中添加橫切面,不需要修改原有代碼,具有高擴展性,原有功能相當于釋放了部分邏輯,讓職責更加明確
常用概念
- 原有功能:切點, pointcut
- 前置通知:在切點之前執(zhí)行的功能.before advice
- 后置通知:在切點之后執(zhí)行的功能,after advice
- 如果切點執(zhí)行過程中出現(xiàn)異常,會觸發(fā)異常通知,throws adivce
- 所有功能總稱為叫做切面.
- 織入:吧切面嵌入到原有功能的過程叫做織入
Spring提供了2種 AOP 實現(xiàn)方式
2.1 Schema-based
1)每個通知都需要實現(xiàn)接口或類
2)配置spring配置文件在<aop:config>配置
2.1.2 具體實現(xiàn)步驟
1.1)前置通知類配置 導入多需要的jar包或依賴(aopalliance.jar和aspectjweaver.jar)
1.2)新建前置通知類 并且繼承 MethBeforeAdvice
public class MyBeforeAdvice implements MethodBeforeAdvice{
@Override
public void before(Method arg0,Object[] arg1,Object arg2) throws Throwable{
System.out.println("執(zhí)行前置通知");
}
}
2.1 新建后置通知 實現(xiàn) AfterReturningAdvice接口
(arg0:切點對象返回值,arg1:切點方法對象,arg2:切點方法參數(shù),arg3:切點方法所在類對象)
public class MyAfterAdvice implements AfterReturningAdvice{
@Override
public void before(Object arg0, Method arg1,Object[] arg2,Object arg3) throws Throwable{
System.out.println("執(zhí)行前置通知");
}
}
3.配置spring配置文件
3.1 引入aop命名空間
3.2 配置通知類的<bean>
3.3 配置切面
3.4 * 通配符,匹配任意方法名,任意類名,任意一級包名
3.5 如果希望匹配任意方法參數(shù)(..)
2.2 AspectJ
1)每個通知不需要實現(xiàn)接口或類
2)配置Spring配置文件是在<aop:config>的子標簽<aop:aspect>中配置
3) 配置異常通知的步驟
只有當切點報異常才會觸發(fā)異常通知,如果想使用schema-base,需要按照特定的要求自己編寫
- 聲明式事務
. Spring依賴注入
當一個類(A)中需要依賴另外一個類(B)對象時,把B賦值給A的過程就叫依賴注入
DI有三種方式,分別為:
- 接口注入
- Setter方法注入
- 構造方法注入