1.Spring AOP的知识点总结:
a.AOP--------->面向切面编程,其核心:解决程序中的公共问题(如:权限验证,日志记录等)
b.AOP概念:
I.切面(Aspect):一个关注点的模块化,可能横切多个对象(如:事务管理)。
I.连接点(JoinPoint):程序执行过程中某个特定的点(如:调用某方法或者处理异常)。
I.通知(Advice):包括Around(环绕通知)、Before(前置通知)、After(后置通知)、Throws(异常通知),大部分AOP框架以(Interceptors)拦截
器作为
通知模型。
I.切入点(Pointcut):匹配连接点(JoinPoint)的断言。
I.引入(Introduction):为一个类增加方法或字段。通过引入来使所有对象实现IsModified接口。-------为简化缓存。
I.目标对象(Target Object):包含一个连接点的对象,也称代理对象。
I.AOP代理(AOP Proxy):AOP框架产生的对象,包括通知Advice。
I.织入(Weaing):将切面(Aspect)连接至其他应用程序类型或对象,并创建被通知(Advised)的对象。
2.Spring AOP代理:通过调用某个类的**方法之前或之后执行相应的操作(如:权限验证,日志记录等)
注意:spring默认主要用于接口的JDK动态代理,也可以通过CGLIB代理实现类的代理而非接口。若对象无须实现接口,默认使用CGLIB代理。
CGLIB代理类特点:是对实现类进行代理。必须启用:<aop:aspectj-autoproxy/>
I.AOP代理的特点:代码从系统中分离,精力集中业务的实现。
系统涉及的公共问题集中实现。
精力集中在业务代码的实现。
I.Spring AOP:只支持Spring Bean方法执行连接点,
I.切入点声明包括两个部分:
a.签名,包含名称与任意参数。
b.切入点表达式,决定关注哪个方法的执行。
3.Spring的通知:实现了核心业务与非核心业务的分离。
I.Around(环绕通知):在连接点的前后执行,拦截对目标对象方法的调用。
a.环绕通知需要实现MethodInterceptor接口。
b.invoke()方法在执行代理的目标方法时该方法自动调用。(invocation:连接点所属目标子类及连接点信息)
public Object invoke(MethodInvocation invocation) throws Throwable{
------------前置的操作-------------
Object obj=invocation.proceed();
------------后置的操作-------------
return obj;
}
II. 前置通知(Before):在目标方法被调用之前调用
a.前置通知实现MethodBeforeAdvice接口
b.before()方法将在目标方法调用之前自动被调用
public void before(Method args0,Object[] arg1,Object arg2) throws Throwable{
//一些在业务操作之前调用的操作
}
注解:arg0:记录连接点的信息
arg1:连接点(即被通知的方法)的参数信息
arg2:目标对象信息
III.后置通知(After):在目标方法被调用之后调用
a.后置通知实现AfterReturningAdvice接口。
b.afterReturning()方法在目标方法调用结束后自动调用。
pubic void afterReturning(Object arg0,Method arg1,Object[]arg2,Object arg3) throws Throwable{
//一些在业务方法操作之后调用的操作
}
注解:arg0:连接点方法返回类型信息
arg1:连接点的参数信息
arg2:连接点所属的目标类
IV.异常通知(Throws):当连接点(即目标方法)抛出异常时才会执行异常通知类。
a.实现ThrowsAdvice接口。
b.afterThrowing()方法在目标方法抛出异常时调用
public void aferThrowing(Method method,Object[]arg0,Object arg1) throws Throwable{
//定义异常的信息或方法
}
V.在提供一些通知后要在applicationContext.xml中配置
a.配置spring代理方式定义的实体对象
b.配置通知类<bean id="beforeAdvice" class="path路径"/>
<!---------------------当需要对方法增加处理------------------------------------!>
<!--
<!-- 将环绕通知拦截器包装为Advisor,该对象确定代理对何种方法增加处理-->
<bean id="aroundAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<!-- Advice属性确定处理Bean -->
<property name="advice">
<!-- 应用容器的通知类型Bean(如:后置通知) -->
<ref bean="afterAdvice"/>
</property>
<!-- patterns确定正则表达式模式-切入点(条件)->
<property name="patterns">
<!--确定正则表达式的列表-->
<list>
<value>.*方法名.*</value>
</list>
</property>
</bean>
-->
c.使用ProxyFactoryBean产生代理对象,通过代理类访问业务逻辑。
<bean id="proxyBean" class="org.springframework.aop.framework.ProxyFactoryBean">------>配置一个代理工厂
<!--代理对象所实现的接口-->
<property name="proxyInterfaces">--------->必须依靠代理上层的代理接口
<value>自定义的接口的path</value>
</property>
d.通过代理需要的拦截器,可以是普通的Advice,也可以是Advisor
<property name="interceptorNames">
<list>
<value>beforeAdvice(通知类的实例对象)</value>
</list>
</property>
e.目标对象------->目标对象
<property name="target">
<ref bean="实体类的对象"/>
</property>
----------------------------------------------------------------------------
注意:AOP:也可如下实现切面注入
I.配置切面Bean和实体类bean
I.配置信息
<!-- 配置AOP -->
<aop:config>
<!-- 配置切面 -->
<aop:aspect id="testAspect" ref="txAspect">
<!-- 配置通知 -->
<aop:before method="doBefore" pointcut-ref="cut"/>
<!-- 配置切入点
expression:表达式
第一个"*":任意返回值
第二、三个"*":任意子包下所有类
(..):任意参数
如匹配一个参数 String类型 (String)
-->
<aop:pointcut id="cut" expression="execution(* com.imp.*.*(..))"/>
</aop:aspect>
</aop:config>
分享到:
相关推荐
NULL 博文链接:https://fangguanhong.iteye.com/blog/1918117
spring AOP 理论知识点总结.wpsspring AOP 理论知识点总结.wpsspring AOP 理论知识点总结.wps
通过对SRPING aop的使用和研究,总结出来的SPRING AOP使用原理,以及在使用spring aop过程中要注意的问题
主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB ...
Spring_IOC_AOP总结,有代码详细讲解了springIOC和AOP的功能,是你学习三大框架的必备
3、了解Spring中两种动态代理方式的区别; 4、掌握基于XML和注解的AspectJ开发。 二、 实验内容 1、按图所示的类图结构,设计接口及其实现类,并完成另外两附加要求:(1)日志功能:在程序执行期间追踪正在发生的...
自己总结的学Spring AOP的步骤,以及代码示例。可供刚学AOP的同学们参考。
Spring AOP之基于AspectJ注解总结与案例 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45394409
学习spring bean模块、spring aop 模块、spring才用的设计模式和spring源码扩展等几个角度的学习分享
Spring AOP之基于Schema配置总结与案例 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45242505
SpringBoot下的Spring——DAY04——动态代理总结、AOP、自定义注解进行拦截、动态获取注解参数、通知方法 1.动态代理总结 1.1 JDK动态代理特点 1.2 CGlib动态代理 1.2.1 CGLib特点说明 1.3 动态代理的作用 2 Spring...
NULL 博文链接:https://justsee.iteye.com/blog/1297646
spring中AOP个人总结 简介 aop(aspect oriented programming)面向切面编程是spring当中一个重要内容,在学习之后感觉这个思想挺不错的,做个总结 AOP讲解 一、面向切面编程 听说过面向对象编程(oop),但是...
aop分析笔记 个人总结所得 org.springframework.aop.framework.autoproxy
对spring aop进行了全面的总结
Spring中实现AOP有很多方式,这里总结了四种,有基于代理的实现方式,也有基于AspectJ 的注解方式,还有基于AOP标签的配置
主要介绍了详解Spring学习总结——Spring实现AOP的多种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
一、AOP 概念 二、AOP 种类 三、Spring AOP 代理原理 四、Spring AOP 通知类型 五、Spring AOP Pointcut 六、Spring AOP 中的Advisor其实就是Aspect 七、AOP ProxyFactory 八、自动代理