(1)Spring AOP的简单应用:
AOP 主要应用场景有:
1. Authentication 权限
2. Caching 缓存
3. Context passing 内容传递
4. Error handling 错误处理
5. Lazy loading 懒加载
6. Debugging 调试
7. logging, tracing, profiling and monitoring 记录跟踪 优化 校准
8. Performance optimization 性能优化
9. Persistence 持久化
10. Resource pooling 资源池
11. Synchronization 同步
12. Transactions 事务
-->AOP:(Aspect Orinted Programming)面向切面编程,用于具有横切逻辑的场合,如:访问控制,事务管理,性能检测,由切入点和增强处理组成。
AOP主要核心是:在什么位置(pointcut:切入点)执行什么功能(advice:增强处理),AOP在Java里是利用反射机制实现,
关键词:
-->Aspect(切面):一个模块化的横切逻辑,类似于 Java 中的类声明。
-->Join Point(连接点):原程序执行过程中的某一个点,构造方法调用,字段的设置和获取,方法的调用,方法的执行,异常的处理执行,类的初始化。比如方法1-->方法2-->方法3,此时方法2可以称作一个连接点
-->Advice(增强处理):在连接点上执行的代码逻辑,Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。eg:在2的前后加上日志输出
-->Pointcut(切入点):对连接点的描述,即匹配的条件,它定义了相应的 Advice 将要发生的地方,eg:假如符合2连接点的某一个特征,执行增强程序
-->Target Object(目标对象):被切面增强的对象
-->Weaving(织入):执行增强处理程序的过程
xml文件配置实现方式:
1 <!-- 注解方式配置事物 --> 2 <tx:annotation-driven transaction-manager="transactionManager" /> 3 <bean class="com.one.ssm.impl.aopTest.UserServiceLogger" /> 4 <aop:aspectj-autoproxy/> 5 注意:需要在配置文件中加入<aop:aspectj-autoproxy/>就可以启用对@AspectJ注解的支持 6 <!--Aop配置实例--> 7 <bean ></bean> 8 <aop:config> 9 <aop:pointcut ></aop:pointcut> 10 <aop:aspect ref="thLogger"> 11 <!--前置增强--> 12 <aop:before method="before" pointcut-ref="pointcut"/> 13 <!--后置增强--> 14 <aop:after-returning returning="result" method="afterRunning" pointcut-ref="pointcut"/> 15 <!--异常抛出增强--> 16 <aop:after-throwing method="afterThrowing" pointcut-ref="pointcut" throwing="e"/> 17 <!--实现最终增强,无论如何都要执行,相当于finally--> 18 <aop:after method="afterLogger" pointcut-ref="pointcut"/> 19 <!--实现环绕增强,通过方法名为ProceedingJoinPoint类型的参数获取连接点的信息 20 她的proceed()方法可以调用真正的目标方法,实现对连接点的完全控制--> 21 <aop:around method="aroundLogger" pointcut-ref="pointcut"/> 22 </aop:aspect> 23 </aop:config>