spring aop中单独代理和自动代理的设置

本文介绍了Spring框架中AOP机制的两种代理实现方式:单个代理和自动代理。单个代理通过ProxyFactoryBean实现,适用于少量特定类的代理;自动代理通过DefaultAdvisorAutoProxyCreator实现,能自动为符合通知条件的类创建代理。文章还提供了具体的配置实例。

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

spring的aop机制提供两类方式实现类代理。一种是单个代理,一种是自动代理。

  单个代理通过ProxyFactoryBean来实现,自动代理通过BeanNameAutoProxyCreator或者 DefaultAdvisorAutoProxyCreator实现。

  为了给程序加入日志功能,我们采用aop的方式。编写一个日志通知类 :com.tixa.fms.service.server.LogService

  配置文件中添加以下代码:

<!--设置日志通知-->
<bean id="logAdvisor" class="org.springframework.aop.support.
RegexpMethodPointcutAdvisor">
<property name="advice">
<bean class="com.tixa.fms.service.server.LogService"/>
</property>
<property name="patterns">
<list>
<value>.*insertNadCustomerRealFinance.*</value>
</list>
</property>
</bean>

  一、采用单个代理方式 (费时费力,项目中需要多出加入通知的话,不会采用此方式)

  需要在beans.xml中添加:

<!--<bean id="log" class="org.springframework.aop.framework.
ProxyFactoryBean">-->
<!--<property name="proxyInterfaces" value="com.tixa.fms.domain.logic.
FinanceInFacade" />-->
<!--<property name="interceptorNames">-->
<!--<list>-->
<!--<value>logAdvisor</value>-->
<!--</list>-->
<!--</property>-->
<!--<property name="target">-->
<!--<ref local="financeInFacade" />-->
<!--</property>-->
<!--</bean> -->

  项目中其他通过注入方式设置FinanceInFacade属性的bean,不能直接注入FinanceInFacade的bean id.而要注入代理的bean id,此例中就是 log。

<bean id="financeInController" class="com.tixa.fms.web.spring.
FinanceInController">
<property name="financeInFacade"><ref local="log"/></property>
<property name="methodNameResolver" ref="methodNameResolver"/>
</bean>

  二、自动代离方式:

  <!——自动代理——>

  <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

  增加此行,容器会自动根据通知要匹配的切入点,为包含切入点的类创建 代理。

  需要注入代理的地方依然按照原来的bean id注入URL查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值