java常用注解2

这篇博客主要介绍了Java中的AOP注解@Aspect和Spring中的事务管理注解@Transactional,包括切面定义、前置通知、后置通知、环绕通知、异常处理以及@CrossOrigin用于处理跨域请求。此外,还探讨了Spring的事务回滚策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Aspect
 切面类 注解,用与标识该类是切面类

指定切入点规则
 within表示对那个类进行增强,会对该类所有方法进行增强
此时连接点变成了切入点(指定了规则)
    @Pointcut("within(cn.tdeu.pojo.A)")
    public void rule(){

@Component
@Aspect
//切面类
public class MyAspect {
    @Pointcut("within(com.jt.pojo.BasePojo)")
    public  void rules(){}
    @Around("rules()")
    public void  around(){System.out.println("环绕通知");}
    @Before("rules()")
    public void  before(){System.out.println("前置通知");}
    @AfterReturning("rules()")
    public void  afterReturning(){System.out.println("后置通知");}
    @AfterThrowing("rules()")
    public void afterThrowing(){System.out.println("异常处理");}
    @After("rules()")
    public void after(){System.out.println("最终通知");}
}

@Slf4j
lombok提供的注解,帮助程序员生成日志记录
@XSlf4j


@EnableAspectJAutoProxy(proxyTargetClass = true)强制使用CGLIB

    }
 前置通知
    @Before("rule()")
    public void before(){
        System.out.println("前置通知");
    }
@AfterReturning(value = "rule3()" , returning = "rs")
    public void afterRun(String rs){
        System.out.println("后置通知被执行了");
        System.out.println("目标方法的返回值"+rs);
    }
 @Around(value = "rule2()")
    @After("rule2()")最终通知
    public Object afterRun(ProceedingJoinPoint pjp) throws Throwable {
      System.out.println("环绕通知被执行了");

@AfterThrowing(value = "rule4()",throwing = "e")
    public void afterRun(Exception e) throws Throwable {
      抛异常时记录日志 创建日志对象 org.slf4j.类的对象
       Logger log = LoggerFactory.getLogger(Second.class);
      级别由低到高
        log.trace("===trace级别追踪");
        log.debug("===debug级别调试");
      spring默认中日志info级别及以上
        log.info("===info级别通知");
        log.warn("===warn级别警告");
        log.error("===error级别错误");
        String message = e.getMessage();
        System.out.println("AfterThrowing通知被执行了")

@CrossOrigin(origins = "*", maxAge = 3600)是用来处理跨域请求的注解

 @Transactional(rollbackFor = Exception.class )
//    spring事务控制 @Transactional 通过环绕通知控制 around
//    around 特征 业务执行前(开启事务控制),执行目标方法 ,业务执行后(成功提交事务 失败回滚事务)
    /**
     * rollbackFor = Exception.class, 遇到异常回滚数据
     * noRollbackFor = Exception.class 遇到异常不回滚数据
     * spring 默认事务策略
     *   1.如果控制的方法出现了运行时异常,则事务自动的回滚
     *   2.如果控制的方法出现了编译时异常, 则事务不会自动回滚,
     *      spring任务程序既然出现提示需要异常处理,则默认由程序员自己处理,spring不控制
    */

    public void delete(Integer id) {
        userMapper.deleteById(id);
    }

/**
 * 全局异常处理 采用环绕通知AOP around
 *
 */
@RestControllerAdvice
//异常处理后返回json串
//捕获controller 层的异常,其他层向上抛
public class MyException extends Exception {
    /**
     * 业务:后端报错,提示用户,返回SysResult对象
     */
    @ExceptionHandler(RuntimeException.class)
//    当遇到某种异常时全局异常处理机制生效!(遇到运行时异常生效)
    public Object exception(Exception e){
        e.printStackTrace();
//        e.getMessage();

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值