学习笔记之springAOP的aspectJ实现注意点总结
2017-06-04 15:34
746 查看
在使用spectj注解实现springAOP:
1.需要使用@Aspect注解来标注切面
2.可以使用@before,@afterRuning,@around,@afterThrowning注解,来标注通知
3.必须有切入点point-cut,使用@pointcut(execution(""))注解来标注切入点
4.在aop.xml中,需要有
测试类
接口,接口必须要有,如果不使用接口代码的方式,spring也支持CGLB代理,只需要导入asm的jar包,在xml中设置
aop.xml
1.需要使用@Aspect注解来标注切面
2.可以使用@before,@afterRuning,@around,@afterThrowning注解,来标注通知
3.必须有切入点point-cut,使用@pointcut(execution(""))注解来标注切入点
4.在aop.xml中,需要有
<aop:aspectj-autoproxy />,制定开启aspectj自动代理
5.在spring的动态代理底层使用的是jdk的代理机制,
newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) 第一个参数是需要代理的类,第二个参数是需要代理类实现的接口,所以称为接口代理,
必须有指定接口。
package com.kayak; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect//切面类 public class Sleep { @Before("sleePpoint()") public void beforeSleep(){ System.out.println("睡觉之前要记得脱衣服"); } @Pointcut("execution(* com.kayak.*.sleep(..))") public void sleePpoint(){ System.out.println("..............."); } @AfterReturning("sleePpoint()") public void afterSleep(){ System.out.println("睡醒之后要记得穿衣服"); } }
测试类
package com.kayak; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { /** * @param args */ public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-aop.xml"); TimeHandleable sleep = (TimeHandleable)ctx.getBean("timeHandle"); sleep.sleep(); } }
接口,接口必须要有,如果不使用接口代码的方式,spring也支持CGLB代理,只需要导入asm的jar包,在xml中设置
<aop:aspectj-autoproxy proxy-target-class="true"/>就可以
package com.kayak; public interface TimeHandleable { public void sleep(); }实现类
package com.kayak; public class TimeHandle implements TimeHandleable{ public void sleep(){ System.out.println("12点钟之前一定要睡觉"); } }
aop.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"> <bean id="sleep" class="com.kayak.Sleep"></bean> <bean id ="timeHandle" class="com.kayak.TimeHandle"></bean> <aop:aspectj-autoproxy /> </beans>
相关文章推荐
- spring学习笔记6--简单模拟实现AOP(cglib版)
- Spring AOP框架学习笔记(2):AOP拦截器调用的实现
- Spring学习总结(三)——Spring实现AOP的多种方式
- Spring源码学习笔记(三)AOP实现
- Spring学习总结——Spring实现AOP的多种方式
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- Spring学习总结(15)——Spring AOP 拦截器的基本实现
- [原创]java WEB学习笔记105:Spring学习---AOP介绍,相关概念,使用AOP,利用 方法签名 编写 AspectJ 切入点表达式
- Spring学习总结(16)——Spring AOP实现执行数据库操作前根据业务来动态切换数据源
- Spring学习笔记 —— AOP(面向切面编程) 之使用ProxyFactoryBean实现AOP
- Spring学习笔记(14)----使用Spring的注解方式实现AOP
- ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP的细节)
- [Spring]Spring AOP学习笔记(3)---Spring JDBC总结
- [原创]java WEB学习笔记108:Spring学习---基于配置文件的形式实现AOP
- Spring学习笔记(三)Spring注解方式实现AOP
- Spring学习笔记(14)----使用CGLIB实现AOP功能
- ITCAST视频-Spring学习笔记(使用CGLIB实现AOP功能与AOP概念解释)
- ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
- Spring-AOP-学习笔记(2)-AspectJ
- Spring学习总结(15)——Spring AOP 拦截器的基本实现