spring aop 简单逻辑,代理,通知

0.前期准备

0.1:项目结构:
在这里插入图片描述
0.2: 导入依赖
https://blog.csdn.net/m0_47306534/article/details/115269906

1.创建UserDao

package com.zyq.dao;

public class UserDao
{
    public String queryUser()
    {
        System.out.println("查询完成");
        return "HT";
    }
}

2.使用代理UserAspect

package com.zyq.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;

@Aspect
public class UserAspect {
    // 前置通知:
    @Before(value = "UserAspect.pointcut()")
    public void before()
    {

        System.out.println("前置通知===========");
    }

    // 后置通知:
    @After(value = "UserAspect.pointcut()")
    public void after() {
        System.out.println("后置通知============");
    }


    // 环绕通知:
    //环绕通知抛出异常
    @Around(value = "UserAspect.pointcut()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("环绕前通知==========");
        Object obj = joinPoint.proceed();
        System.out.println("环绕后通知==========");
        return obj;
    }

    // 异常抛出通知:
    @AfterThrowing(value = "UserAspect.pointcut()", throwing = "e")
    public void afterThrowing(Throwable e) {
        System.out.println("异常抛出通知=========" + e.getMessage());
    }

    //返回通知
    @AfterReturning(value = "UserAspect.pointcut()", returning = "result")
    public void afterReturning(Object result) {
        System.out.println("返回通知==========");
        System.out.println("查询的结果是:"+result);

    }

    // 切入点的注解:
    @Pointcut(value = "execution(* com.zyq.dao.UserDao.*(..))")
    private void pointcut() {
    }



}

3.注册组件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--1.注册组件,代理-->
    <bean id="userDao" class="com.zyq.dao.UserDao"></bean>
    <bean id="userAspectA" class="com.zyq.aspect.UserAspect"></bean>
    <aop:aspectj-autoproxy/>

</beans>

4.测试

import com.zyq.dao.UserDao;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class MyTest {
    @Test
    public void selet(){
        ApplicationContext ioc=new ClassPathXmlApplicationContext("aop.xml");
        UserDao userDao=(UserDao) ioc.getBean("userDao");
        userDao.queryUser();
    }
}

5.结果输出

在这里插入图片描述

到此结束
GJS纯洁

ps :博主打球崴脚了,受伤了不得不断更

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GJS纯洁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值