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注解的主要内容,如果未能解决你的问题,请参考以下文章
Spring5学习笔记 — “AOP操作—AspectJ注解”