Spring -aop通知实例
来源:互联网 发布:c语言第三版课后答案 编辑:程序博客网 时间:2024/06/16 09:48
aop词解
切面 Aspect
对横切性关注点的模块化。
通知 Advice
对横切性关注点的具体实现。
切入点 Pointcut
它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用。
连接点 JoinPoint
Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:Aspecj可以支持。
织入 Weave
将Advice应用到Target Object上的过程叫织入,Spring支持的是动态织入。
目标对象 Target Object
Advice被应用的对象。
代理 Proxy
Spring AOP默认使用JDK的动态代理,它的代理是运行时创建,也可以使用CGLIB代理。
定义:
Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点。简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。
增强或通知:
Spring支持五种类型的增强或通知(Advice):
Before(方法执行前) org.apringframework.aop.MethodBeforeAdvice
AfterReturning(方法返回后) org.springframework.aop.AfterReturningAdvice
After-throwing(异常抛出后) org.springframework.aop.ThrowsAdviceArround
环绕,即方法前后org.aopaliance.intercept.MethodInterceptor
引介,不常用org.springframework.aop.IntroductionInterceptor
实例:
需要实现相关的接口
public class AfterAdvice implements AfterReturningAdvice {private static Logger logger = LogManager.getLogger(AfterAdvice.class);@Overridepublic void afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3) throws Throwable {logger.info("对业务代码进行自动日志记录");}}
描述连接点是进行AOP编程最主要的一项工作。增强提供了连接点方位信息:如织入到方法前面、后面等,而切点进一步描述织入到哪些类的哪些方法上。
xml配置文件
<!-- 目标对象 --> <bean id="student" class="com.java1704.spring.aop.server.Student"></bean><!-- 通知 --><bean id="afterAdvice" class="com.java1704.spring.aop.advice.AfterAdvice"></bean><bean id="securety" class="com.java1704.spring.aop.advice.Securety"></bean><bean id="beforeAdvice" class="com.java1704.spring.aop.advice.BeforeAdvice"><property name="securety" ref="securety"></property></bean><!--顾问 advisor 切点和通知组成的配置器--><bean id="pointcutAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"><property name="pattern" value="com\.java1704\.spring\.aop\.server\.Student\..*"></property><!-- 切点 --><property name="advice" ref="beforeAdvice"></property></bean><!-- 代理工厂 --><bean id="ProxyFactory" class="org.springframework.aop.framework.ProxyFactoryBean"><property name="target" ref="student"></property> <!--需要执行的bean ,直接调用 ProxyFactory即可--><property name="interceptorNames"><list><value>pointcutAdvisor</value> <!--这里可以时advice(切点) ,也可以是advisor(配置器)--></list></property></bean>
测试代码:调用配置的代理工厂
@Testpublic void test() {ApplicationContext context=new ClassPathXmlApplicationContext("spring-core2.xml");Student student= (Student) context.getBean("ProxyFactory");student.addStudent();}
阅读全文
0 0
- Spring -aop通知实例
- Spring AOP通知实例 – Advice
- Spring AOP-通知-前置通知
- Spring AOP-通知-后置通知
- Spring-AOP-通知-环绕通知
- Spring-AOP-通知-异常通知
- Spring AOP四种创建通知(拦截器)类型实例
- Spring AOP四种创建通知(拦截器)类型实例
- Spring AOP四种创建通知(拦截器)类型实例
- Spring AOP四种创建通知(拦截器)类型实例
- Spring AOP四种创建通知(拦截器)类型实例
- Spring AOP实例(五大通知类型)
- Spring-AOP通知
- spring AOP和通知
- Spring AOP-前置通知
- Spring AOP-后置通知
- Spring AOP 通知
- Spring AOP 各种通知
- spring boot @async
- hibernate5 报错org.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found
- java中标识符和关键字
- Python 性能分析大全
- linux删除文件夹
- Spring -aop通知实例
- CCF 201703-5 引水入城(最大流问题:EK算法,BFS 50分)(Dinic算法 40分)
- 京东面试--总结
- hdu 5884
- hibernate+structs+spring各有什么作用
- Spring Boot之配置虚拟映射路径
- 安卓手机锁屏收发消息问题
- time相关函数
- linux系统基本操作——存储设备的管理