前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AOP的通知类型(注解)

AOP的通知类型(注解)

作者头像
suveng
发布2019-09-18 14:14:59
5240
发布2019-09-18 14:14:59
举报
文章被收录于专栏:分享/效率/工具/软件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

代码语言:txt
复制
                 本文链接:[https://blog.csdn.net/qq\_37933685/article/details/81673831](https://blog.csdn.net/qq_37933685/article/details/81673831) 

个人博客:https://suveng.github.io/blog/​​​​​​​

注解 配置 spring AOP 实现五种通知类型

话就不多说了,首先准备环境,准备环境部分就直接看xml配置spring AOP吧。也可以直接把这篇的源码给download下来

环境使用maven搭建spring 环境,引入必要的jar包之后,我把之前的xml配置先给注释掉。

要使用注解配置切面,首先要在spring 的配置文件开启 切面自动代理

代码语言:javascript
复制
<aop:aspectj-autoproxy/>

要使用aop标签必须导入约束,xsi直接添加在后面已有的就好。

代码语言:javascript
复制
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation= "http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd"

那么开启切面自动代理之后,我们就可以使用注解了,那我们来准备一个切面类。

AnnotationAspect.java

代码语言:javascript
复制
/**
 * author: Veng Su
 * email: suveng@163.com
 * date: 2018/8/14 16:22
 */

@Component(value = "annotationAspect")
@Aspect
public class AnnotationAspect {

    //before 切
    @Before(value = "execution(* *..*.*.say())")
    public void beforeF(){
        System.out.println("我是before");
    }
    //after 切
    @After(value = "execution(* *..*.*.say())")
    public void afterF(){
        System.out.println("我是after");
    }
    //after_throwing 切
    @AfterThrowing(value = "execution(* *..*.*.say())")
    public void afterTF(){
        System.out.println("我是after-throwing");
    }
    //after-returning 切
    @AfterReturning(value = "execution(* *..*.*.say())")
    public void afterRF(){
        System.out.println("我是after-returning");
    }
    //around 切 要把joinpoint给传进来
    @Around(value = "AnnotationAspect.say()")
    public void aroundF(ProceedingJoinPoint joinPoint){
        System.out.println("前around");
        try {
            joinPoint.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        System.out.println("后 around");
    }
    // 如果切入表达式,大部分都是一样的话,则可考虑抽取出来,简单利用
    @Pointcut(value = "execution(* *..*.*.say())")
    public void say() {}
}

到这里,切面类和aop配置都已配置好了,可以测试了。这里是复用了上次xml配置spring aop的代码

测试:

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/config/beans.xml")
public class SpringTest {
    @Resource(name = "userDao")
    UserDao userDao;
    @Test
    public void testAnnotationAop(){
        userDao.say();
    }
}

测试结果:

这就是简单的用注解方式配置aop。加油

码云代码地址:https://gitee.com/suwenguang/SpringFrameworkDemo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年08月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注解 配置 spring AOP 实现五种通知类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档