Spring3.1.0实现原理分析(九).AOP创建代理对象的过程

本文详细解析了Spring在创建bean代理对象的过程,重点介绍了内部如何通过AspectJPointcutAdvisor和内部后处理器internalAutoProxyCreator来实现AOP。文章通过实例展示了accountDao和accountService的创建步骤,包括通知器和切入点的生成,以及代理对象的决定条件。
摘要由CSDN通过智能技术生成

        大家好,今天我会用一个例子来讲解Spring创建bean代理对象的过程,为大家揭开Spring AOP的神秘面纱。在看这篇博客前我强烈建议读者先看下这两篇博客《Spring3.1.0实现原理分析(六).实例化》《Spring3.1.0实现原理分析(七).填充Bean属性,初始化Bean,登记善后处理,注册单例Bean》, 这两篇博客分析了Spring创建对象的完整过程,有助于你能更好地理解本文的内容。

       下面是例子的bean定义配置,

	<bean id="accountDao" class="testaop.com.qiujy.dao.AccountDaoMySQLImpl"/>
	
	<bean id="accountService" class="testaop.com.qiujy.service.AccountServiceImpl">
		<property name="accountDao" ref="accountDao"/>
	</bean>

	<!-- 日志切面类 -->
	<bean id="logAspectBean" class="testaop.com.qiujy.aspect.LogAspect" />
	
	<!-- AOP配置 -->
	<aop:config>
		
		<!-- 配置一个切面 -->
		<aop:aspect id="logAspect" ref="logAspectBean">
			
			<!-- 定义切入点,指定切入点表达式 (spring目前仅支持方法的切入,不支持属性的切入) -->
			<aop:pointcut id="allMethod" expression="execution(* testaop.com.qiujy.service.*.*(..))"/>
			
			<!-- 前置通知 -->
			<aop:before method="before" pointcut-ref="allMethod" />
		</aop:aspect>
	
	</aop:config>

     在这个例子中一共有6个bean对象需要创建,它们的ID如下(为了便于描述我对ID进行了简化处理),
    1. accountDao
    2. accountService
    3. logAspectBean
    4. internalAutoProxyCreator,        (用于创建代理对象的bean后处理器,该对象是Spring检测到存在aop配置自动添加的)
    5. AspectJPointcutAdvisor#0,      (通知器)
    6. allMethod                                    (切入点)

 

 下面我按照这6个对象的创建顺序进行讲解。

  一. 创建internalAutoProxyCreator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值