【SSM - SpringAOP篇】动态代理 AOP切面编程 AOP注解注入 AOP切面编程-注解注入 开启动态代理,调用 point.proceed()方法进行增强

本文详细介绍了Spring AOP的动态代理模型,包括目标类、代理类、连接点、切入点等概念,并阐述了AOP的准备工作,如添加依赖、定义接口和实现类。接着,讨论了AOP的XML配置,特别是切面表达式的用法。最后,重点讲解了通过注解实现的AOP切面编程,包括在`applicationContext.xml`中开启动态代理以及使用的各种注解。
摘要由CSDN通过智能技术生成

动态代理模型

代理类$Proxy类用于增强UserImpl类的work()方法在这里插入图片描述

AOP术语

1、 目标类target:就是我们需要增强的那个类 如:UserImpl.class
2、 代理类proxy:就是自定义的代理的对象 如:$Proxy.class
3、 连接点joinPoint:程序执行的某个特定位置,Spring仅支持方法的连接点
如: UserImpl类中的所有方法(相当于候选人)
4、 切入点pointCut:就是在目标类中实际增强的方法
如:work()方法(获奖者)
5、 织入weave:就是将代理类中需要增强的方法放入到目标类中去执行的过程
将原方法与其他类的方法一起调用
6、 引介Introduction:引介是一种特殊的增强,它为类添加一些属性和方法(课程不使用)
7、 通知advice:将代理对象中的方法应用到目标类的过程中产生的结果。
8、 切面aspect:所有的切入点和代理对象的方法组成在一起 构成了切面

AOP准备

pom.xml添加依赖导入jar包

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>

    </dependencies>

IUser

//1 必须要有一个接口
public interface IUser {
   
    void work();
}

UserImpl

//2 类与接口是实现关系
public class UserImpl implements IUser {
   
    //连接点
    //切点
   @Override
    public void work() {
   
        System.out.println("做自己喜欢的事情");
    }
 
 //连接点
    @Override
    public void play() {
   
        System.out.println("玩的时候好好玩");
    }
}

Advice

public class Advice {
   
    public void  writeLog(){
   
        System.out.println("正经人谁写日记");
    }
}

UserImplTest

 public class UserImplTest {
   

    @Autowired
    IUser iUser;
    @Test
    public void work() {
   
        System.out.println(iUser);
        iUser.work();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值