什么是spring spring是一个轻量级的控制反转和面向切面的容器框架 核心概念: 1)控制反转(IOC):控制权由应用代码移交给外部容器(spring) 2)依赖注入(DI):由spring容器动态的将某种依赖注入到指定的组件中
Spring之AOP(面向切面编程)
理解:AOP就是让我们专心做事
public void test(){
<----------- AOP
//在所有的方法之前加入日志记录功能 -> AOP的通知中
//核心业务逻辑方法
}
核心概念:
1)连接点:在程序执行过程中明确的点,例如:方法被调用,异常被抛出等等
2)目标:被通知被代理的对象(完成具体核心业务逻辑的方法)
3)通知:在某个特定的连接点上所执行的动作
4)代理:将通知应用到目标上所创建的对象叫做代理对象
注:只有代理对象具备完整的AOP特性,而AOP代码是写在通知中
5)切入点:多个连接点的集合,将通知应用到哪些连接点上
注:切入点相当于是一个匹配条件,只有满足条件的连接点才会将通知应用到目标上
6)适配器:通知+切入点(通知将会根据切入点的匹配要求应用到具体的目标上)
案例演示:
1)前置通知:里氏替换原则(具有相同的父类)
注:请用接口接收代理对象
BookBizImpl implements IBookBiz
Proxy implements IBookBiz
A B C A=IBookBiz B=BookBizImpl C=proxy BookBizImpl 实现了 IBookBiz proxy 实现了 IBookBiz
错误方式:
BookBizImpl bookBiz=(BookBizImpl)proxy;
正确方式:
IBookBiz bookBiz=(BookBiz)proxy;
2)后置通知
3)环绕通知
4)异常通知
在这使用上面定义的通知
在这体现
5)适配器
在案例中采用的是手动代理模式:
spring.xml
<!--目标-->
<bean id="bookBizTarget"
<!--通知-->
<bean id="before/after..."
<!--代理对象-->
<bean id="proxy" class="....">
<!--目标-->
<!--通知-->
<!--指定所生产的代理对象实现的接口-->
</bean>
将通知+目标应用到代理对象的工厂类上