Spring 切面 AOP基础 之三

本文介绍如何使用 Spring 的 BeanNameAutoProxyCreator 和 DefaultAdvisorAutoProxyCreator 进行自动代理,简化 Service 层的代理配置。通过示例展示了如何为特定的服务方法添加拦截器。

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

螃蟹在剥我的壳,脚往杯上落,茶叶煮着温泉,而代码在撸我。看见一手动人的小诗,仿写了一手,上回说到锋利的切面AOP,这里对他进行自动代理,灰常的powerfull。

1、通常手写对Service的代理十分繁琐,可以用BeanNameAutoProxyCreator去根据名字自动代理,还有个DefaultAdvisorAutoProxyCreator更具Advicer匹配成功自动创建代理。

Spring-Customer.xml 

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

   <bean id="customerService" class="com.mkyong.customer.services.CustomerService" >
   		<property name="name" value="Yong Mook Kim" />
   		<property name="url" value="http://www.mkyong.com" />
   </bean>
 
   <bean id="hijackAroundMethodBeanAdvice" class="com.mkyong.aop.HijackAroundMethod" />

   <!--<bean id="customerServiceProxy"
		class="org.springframework.aop.framework.ProxyFactoryBean">

		<property name="target" ref="customerService" />
		
		<property name="interceptorNames">
			<list>
				<value>customerAdvisor</value>
			</list>
		</property>
	</bean>

	-->
	<bean id="customerAdvisor"
		class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
		<property name="mappedName" value="printName" />
		<property name="advice" ref="hijackAroundMethodBeanAdvice" />
	</bean>
	
	
	<!--<bean id="customerAdvisor"
		class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
		<property name="patterns">
			<list>
				<value>.*URL.*</value>
			</list>
		</property>

		<property name="advice" ref="hijackAroundMethodBeanAdvice" />
	</bean>-->
	
	<!-- auto proxy creator -->
	
	<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="beanNames">
			<list>
			<value>*Service</value>
			</list>
		</property>
		<property name="interceptorNames">
			<list>
				<value>customerAdvisor</value>
			</list>
		</property>
	</bean>
	
	<!-- <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" /> -->


</beans>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值