Spring AOP使用配置介绍(三):自动创建代理

Posted on 2010-03-03 22:35  FreeSkyCD  阅读(537)  评论(0编辑  收藏  举报
根据(一)、(二)中介绍的方法已经学会了切面的配置,但都是使用org.springframework.aop.framework.ProxyFactoryBean配置的代理,该方法只能为单个类配置代理。在实际使用中并不方便,因此我们还要学习Spring提供的自动创建功能。
方法一:使用BeanNameAutoProxyCreator
	<!-- 通过bean的名字来匹配选择要代理的bean,在使用时仍用原有bean的id从context中获取 -->
	<bean id="autoProxy"
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<!-- 需要代理的service,以userService结尾注册的bean -->
		<property name="beanNames">
			<list>
				<value>*userService</value>
             <value>*routeService</value>
			</list>
		</property>
		<!-- 拦截器的名称 -->
		<property name="interceptorNames">
			<list>
				<value>validateUserAdvisor</value>
             <!-- 性能监视增强 -->
	            <value>performanceMonitorAdvice</value>
			</list>
		</property>
		<!-- 设置强制使用CGLIB生成代理,此时代理的bean如果已经是代理则必须也是由cglib生成的 -->
		<property name="optimize" value="true" />
	</bean>

其中beanNames用来匹配Spring中配置的bean名称,例如*routeService是匹配那些name或id以routeService结尾的bean。interceptorNames则是用来添加那些要使用的增强,optimize指定代理类用cglib来产生。

方法二:使用DefaultAdvisorAutoProxyCreator
<!-- 自动代理创建器,使用了该创建器就不需要autoProxy了。它会根据advisor中的配置自动找到匹配的类和方法,并为之创建代理 -->
	<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />

该方法的配置最为简单,它会自动为所有的增强所匹配的bean创建相应的代理。

以上两种方法可以只选用其中的一个来简化配置。

已有 0 人发表留言,猛击->>这里<<-参与讨论


JavaEye推荐



Copyright © 2024 FreeSkyCD
Powered by .NET 8.0 on Kubernetes