AspectJ的注解方式实现AOP
1.引入spring基础包
2.引入aspectJ的jar包:
com.springsource.org.aopalliance-*.jar
com.springsource.org.aspectj.weaver-*.jar
3.spring.xml加入相关配置
<!-- 设置使用注解的类所在的包 --> <context:component-scan base-package="net.shibit.*"/> <!-- 使AspectJ注解起作用:自动为匹配的类生产代理对象 --> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
4.实现目标类
public class AServiceImpl implements AService { public void barA() { System.out.println("..."); } }
5.定义切面类
@Order(1) @Aspect @Component public class LoggingAspect { private final Logger logger = Logger.getLogger(LoggingAspect.class); @Before("execution(* net.shibit.service.*.*(..))") public void serviceBeforeMethod(JoinPoint joinPoint) { ** logger.info(..); } }
@Aspect 定义切面类
@Componet 将这个类加入Spring的IOC容器;
@Order(1) 指定切面的优先级,数值越小优先级越高
切入点表达式execution(* net.shibit.service.*.*(..))
第一个*号:表示返回类型,*号表示所有的类型。
第二个*号:表示类名
括号里面表示方法的参数,两个句点表示任何参数。
通知类型
@Before 前置通知,在方法执行之前执行
@After 后置通知,在方法执行之后执行
@AfterRunning 返回通知,在方法返回结果之后执行
@AfterThrowing 异常通知,在方法抛出异常之后执行
@Around 环绕通知,围绕着方法执行
实现AOP,目标(target)类就需生成动态代理。注意:
1、目标类如果实现了某一个接口,那么Spring就会利用JDK类库生成动态代理。
2、目标类没有实现某一个接口,那么Spring就会利用CGLIB类库直接修改二进制码来生成动态代理,需要引用CGLIB类库
参考
http://shamrock.blog.51cto.com/2079212/1557639
http://www.cnblogs.com/yeming/p/5444959.html
http://zhuchengzzcc.iteye.com/blog/1504014
http://blog.csdn.net/wangpeng047/article/details/8560694
转载于:https://www.cnblogs.com/shibit/p/7105652.html
- AOP实现方式2——通过AspectJ提供的注解实现AOP
- spring AOP (使用AspectJ的注解方式 的aop实现) (6)
- AspectJ注解方式实现AOP
- spring 4.0 AOP (使用AspectJ的注解方式 的aop实现)简单实例
- spring 4.0 AOP (使用AspectJ的注解方式 的aop实现)简单实例
- AOP实现方式2——通过AspectJ提供的注解实现AOP
- 使用AspectJ提供的注解方式实现aop
- 使用AspectJ提供的注解方式实现aop
- aop:aspectj-autoproxy,SpringAOP拦截Controller,Service实现日志管理(自定义注解方式)
- AspectJ实现AOP(注解方式)
- 【Spring】—AOP之AspectJ注解方式实现声明式事务管理
- Spring系列之 (十):AOP实现方式(二):使用AspectJ的注解方式
- spring 4.0 AOP (使用AspectJ的注解方式 的aop实现)简单实例
- 使用AspectJ提供的注解方式实现aop
- 使用Spring的注解方式实现AOP
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- Spring Aop之AspectJ注解配置实现日志管理
- spring aop实现的2种方式,以及自定义注解
- springboot aop 自定义注解方式实现一套完善的日志记录(完整源码)