Spring 学习之路(九):Spring 中的AOP(二):事务通知

AspectJ
  • 目前,spring 框架中我们可以使用基于 AspectJ 注解或者是基于XML配置的 AOP(主流是使用 AspectJ ,简单,方便)
  • 如何配置AspectJ

    1. 简单理解,AspectJ 就是一个支持 aop 的第三方组件,spring 提供了很好的支持,我们只需要将 对应的 jar 包加入我们的项目即可(对应 jar 包可以在我的源代码下载)
    2. 如图:
      mark

    3. 配置文件中声明 使用 AspectJ 注解

      1. 引入aop命名空间
        mark
      2. 使 AspectJ 注解生效
        mark
  • AspectJ 注解工作流程

    1. 在 Spring 中声明 AspectJ 切面, 只需要在 IOC 容器中将切面声明为 Bean 实例. 当在 Spring IOC 容器中初始化 AspectJ 切面之后, Spring IOC 容器就会为那些与 AspectJ 切面相匹配的 Bean 创建代理
    2. 在 AspectJ 注解中, 切面只是一个带有 @Aspect 注解的 Java 类

    3. 通知是标注有某种注解的简单的 Java 方法

    4. 对以上流程不清楚的话,我们直接看代码
前置通知
//把该类声明为一个切面:需要把该类放入到ioc容器中,然后再声明为一个切面
@Aspect
@Component
public class LogginAspect {
   

    // 声明该方法是一个前置通知,在目标方法开始之前执行
    @Before("execution(void com.zc.cris.beans.spring.aop.impl.Chinese.*(String))")
    public void beforeMethod(JoinPoint joinPoint) {
        // 获取方法签名和参数集合
        System.out.println(joinPoint.getSignature().getName() + "-----" + Arrays.asList(joinPoint.getArgs()));
        System.out.println("我是方法的前置通知");
    }

- 测试代码

    @Test
    void testProxy() {
        //创建ioc容器
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        //获取bean
        People bean = context.getBean(People.class);

//      System.out.println(bean); 
//      System.out.println(bean.getClass().getName());

        //System.out.println(bean instanceof Chinese);      //false

        //使用bean
        bean.eat("筷子");
        bean.say("中文");
    }

console:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值