AspectJ注解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AspectJ注解相关的知识,希望对你有一定的参考价值。

参考技术A

aop注解
@Component 加入自定义通知类
@Service 加入服务层
@Aspect 声明切面,修饰切面类,获得通知.配合Component使用

注解开发通知
定义切入点
@PointCut ,修饰空方法 private void xxx() , 之后通过“方法名”获得切入点引用
在方法前加入注解通知类型:
@Before 前置 加入自定义方法前
@AfterReturning 后置(value="myPoint()",returning="res")

@Around 环绕

开发流程
第一步:开发注解的通知类 如下所示 我注释了 前置通知以及后置通知,根据自己的实际情况进行修改。

@Component("AnnotationSLogAdvice")
@Aspect
public class AnnotationSLogAdvice
@Pointcut("execution( * com.zyh.service.. . (..))")
public void myPoint()

/* @Before("myPoint()")
public void myBefore(JoinPoint joinPoint)
Log.info("前置");
/
/
@AfterReturning(value = "myPoint()" ,returning = "res" )
public void myAfter(JoinPoint joinPoint, Object res)
Log.info("后置");
Log.info("我是返回值:"+res);
*/

第二步:开发目标接口和实现类(注解方式)

@Service("AnnotationServiceImpl")
public class AnnotationServiceImpl implements AnnotationService
@Qualifier("AnnotationDaoImpl")
@Autowired
private AnnotationDaoImpl annotationDao;
@Override
public void add()
annotationDao.addAnnotation();

第三步:开启注解扫描,开启Aspect

第四步: 测试
一次只开一种通知做测试,其他的通知先注释

@Test
public void testAnnotationBefore()
ClassPathXmlApplicationContext classPathXmlApplicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
AnnotationService annotationService = (AnnotationService) classPathXmlApplicationContext.getBean("AnnotationServiceImpl");
annotationService.add();

@Test
public void testAnnotationAfter()
ClassPathXmlApplicationContext classPathXmlApplicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
AnnotationService annotationService = (AnnotationService) classPathXmlApplicationContext.getBean("AnnotationServiceImpl");
annotationService.returnAnnotation();

@Test
public void testAnnotationAround()
ClassPathXmlApplicationContext classPathXmlApplicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
AnnotationService annotationService = (AnnotationService) classPathXmlApplicationContext.getBean("AnnotationServiceImpl");
annotationService.add();

打印输出结果如下所示:

其他情况就不演示了。

以上是关于AspectJ注解的主要内容,如果未能解决你的问题,请参考以下文章

AspectJ——基于注解的开发方式

AspectJ的注解开发AOP:环绕通知的学习

Spring5学习笔记 — “AOP操作—AspectJ注解”

Spring5学习笔记 — “AOP操作—AspectJ注解”

Spring AOP基于@AspectJ注解的切面

spring注解方式与AspectJ框架数据库事务