根据(一)、(二)中介绍的方法已经学会了切面的配置,但都是使用org.springframework.aop.framework.ProxyFactoryBean配置的代理,该方法只能为单个类配置代理。在实际使用中并不方便,因此我们还要学习Spring提供的自动创建功能。
方法一:使用BeanNameAutoProxyCreator
其中beanNames用来匹配Spring中配置的bean名称,例如*routeService是匹配那些name或id以routeService结尾的bean。interceptorNames则是用来添加那些要使用的增强,optimize指定代理类用cglib来产生。
方法二:使用DefaultAdvisorAutoProxyCreator
该方法的配置最为简单,它会自动为所有的增强所匹配的bean创建相应的代理。
以上两种方法可以只选用其中的一个来简化配置。
已有 0 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
方法一:使用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推荐