栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring配置类如何代替xml中AOP注解支持

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring配置类如何代替xml中AOP注解支持

在配置类上方添加@EnableAspectJAutoProxy即可
@Configuration
@ComponentScan("com.neu")
@EnableAspectJAutoProxy
public class SpringConfig {
}

通知类
package com.neu.advice;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;


@Component
@Aspect
public class MyAspectAdvice {
    //切点方法
    @Pointcut("execution(* com.neu.dao.UserDao.*(..))")
    public void pointCut(){}
    //后置通知
    @AfterReturning("pointCut()")
    public void MyAfterReturning(JoinPoint joinPoint){
        System.out.println("切点方法名:"+joinPoint.getSignature().getName());
        System.out.println("目标对象:"+joinPoint.getTarget());
        System.out.println("打印日志:"+joinPoint.getSignature().getName()+"方法被执行了");
    }
    //前置通知
    @Before("pointCut()")
    public void myBefore(){
        System.out.println("前置通知");
    }
    //异常通知
    @AfterThrowing(value = "pointCut()",throwing = "ex")
    public void myAfterThrowing(Exception ex){
        System.out.println("异常通知");
        System.out.println(ex.getMessage());
    }
    //最终通知
    @After("pointCut()")
    public void myAfter(){
        System.out.println("最终通知");
    }
    //环绕通知
    @Around("pointCut()")
    public Object myAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        System.out.println("环绕前");
        Object obj = proceedingJoinPoint.proceed();//执行切点方法
        System.out.println("环绕后");
        return obj;
    }
}

核心类
package com.neu.dao;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;


@Repository
public class UserDao {
    public void add(){
        System.out.println("用户新增");
    }
    public void del(){
        System.out.println("用户删除");
    }
    public void update(){
        int i = 1/0;
        System.out.println("用户修改");
    }
}

测试类
 @Test
    public void testAdd1(){
        ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
        UserDao userDao = (UserDao) ac.getBean("userDao");
        userDao.add();
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/826843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号