Spring的AOP动态代理通过注解注入方法

本文介绍如何使用AspectJ的注解实现AOP(面向切面编程)。具体包括创建切入点类、增强类,以及使用Spring管理JavaBean对象并配置AOP动态代理的过程。

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

需要的jar包下载
这里写图片描述

勾选的包都是实现aop注入方法的必须包,其中日志jar包也是必须导入的,否则会报错。之前笔者以为是可以不用导入的,结果笔者报错了,所以就没有在图中勾选。^_^

可能有些读者不知道我上传包的作用,下面对包的功能介绍:

这里写图片描述
第一个画勾的包是AspectJ的相关依赖包

基于aspectJ的注解AOP

1.使用注解方式实现AOP操作

第一步:创建切入点类,并且通过Spring的JavaBean管理注释来创建类对象

Book类:

@Component(value="book")//创建对象
public class Book {

    public void buy(){
        System.out.println("平常我们的动作:老板,我要买书!!!");
    }
}

第二步:创建增强类,并且通过Spring的JavaBean管理注释来创建对象,配置Aspect注释来标识增强类:

@Component(value="bookAdvice")//创建增强类对象
@Aspect//配置增强类
public class BookAdvice {

    @Before(value="execution(* cn.domarvel.entity.Book.buy(..))")//把增强类注入到类的方法中去,并且配置是前置增强还是后置增强。
    public void buyCheckBefore(){
        System.out.println("前置增强:老板你的书怎么有点破啊!!而且版本也不是最新的!!");
    }
}

XML的配置:

<?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:context="http://www.springframework.org/schema/context"
    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/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 要使用注解来管理JavaBean对象要导入aop那个jar包以及context这个约束 -->
<!-- 要使用注解来实现aop的方法注入,要导入aop这个jar包,以及导入aop约束 -->
<!-- 第一个:对象让Spring管理是IOC思想,第二个:注入方法是AOP的思想 -->

<context:component-scan base-package="cn.domarvel"></context:component-scan><!-- 自动进行扫描包下面的类是否需要创建JavaBean对象,并且交给Spring容器进行管理 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy><!-- 配置aop动态代理注解扫描,进行自动代理 -->
</beans>

客户端代码:

public class BookClient {
    public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        Book book=(Book)context.getBean("book");
        book.buy();
    }
}

/*
输出结果:

前置增强:老板你的书怎么有点破啊!!而且版本也不是最新的!!
平常我们的动作:老板,我要买书!!!

*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值