springAop实现过程的debug追踪流程

本文通过一个例子介绍了Spring AOP的实现过程,从创建要织入的类和切面,到配置XML,展示了如何生成并替换代理对象。在debug过程中,发现对象在Spring容器初始化后即被转换为代理类,并存放在singletonObjects map中。通过源码追踪,揭示了bean的创建、初始化、代理对象的生成等步骤,特别指出在`createAopProxy`和`getProxy()`方法中完成具体代理对象的创建。整个流程涉及多个步骤,包括bean的生命周期管理和AOP代理的生成。
摘要由CSDN通过智能技术生成

首先我们创建一个例子
创建要织入的类

@Service
public class UserService {
    public  void login() {
        System.out.println("登陆");
    }
}

创建切面
这里需要加上@Component注解,以便被spring扫描到
@Aspect表示这个是一个切面

@Aspect
@Component
public class UserServiceAop {

    @Pointcut("execution(* techermanager.Service.*.*(..))")
    private void log(){

    }

    @Before("techermanager.controller.aspect.UserServiceAop.log()")
    private void beforeLog(){
        System.out.println("before");
    }
}

在spring的xml配置文件里面加上配置

    <!-- 启用aspect注解 true表示支持基于类生成 这样需要用到cglib  false表示基于接口生成  -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>

注意这里
proxy-target-class="true" ,true表示支持基于类生成 这样需要用到cglib false表示基于接口生成 ,我们这里是为一个类生成代理切面 ,所以用true 。

运行


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值