有人可以用简单的术语解释ProxyFactoryBean吗?我看到这被引用很多地方。ProxyFactoryBean in Spring
回答
ProxyFactoryBean
用于将拦截器逻辑应用于现有的目标bean,以便在该bean的方法被调用时,拦截器在该方法调用之前和之后执行。这是面向方面编程(AOP)的一个例子。
这可以用一个简单的例子来解释。 AOP的经典用例是将缓存应用于方法调用的结果。这可以通过使用ProxyFactoryBean
进行接线如下:
<bean id="targetService" class="com.x.MyClass"/>
<bean id="cachingInterceptor" class="com.x.MyCachingInterceptor"/>
<bean id="cachedService" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="targetService"/>
<property name="interfaces">
<list>
<value>com.x.MyService</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>cachingInterceptor</value>
</list>
</property>
</bean>
我们有com.x.MyClass
类型,它实现了接口com.x.MyService
的豆targetService
。我们也有一个名为cachingInterceptor
的拦截器bean,它实现了接口org.aopalliance.intercept.MethodInterceptor
。
该配置将生成一个名为cachedService
的新bean,它实现了MyService
接口。任何对该对象方法的调用都将首先通过cachingInterceptor
对象的invoke()
方法传递,在这种情况下,该方法将在其内部缓存中查找以前方法调用的结果。它会返回缓存的结果,或允许方法调用继续执行targetService
上适当的方法。
targetService
本身对此一无所知,它完全没有意识到所有这些AOP事情正在进行。
ProxyFactoryBean
在Spring内部大量使用,以便由于各种原因(例如远程存根,事务管理)生成代理,但它也非常适合在应用程序逻辑中使用。
在这里添加一件事就是,如果我们有几个'interceptorNames',它们按照这样的顺序应用,那么列表中的第一个是第一个拦截调用等等。 – Vic 2013-11-04 11:40:22
ProxyFactoryBean将方面应用于现有的bean。您从现有的bean(目标bean)开始,它弹出“包装”以添加您提供的方面。返回的bean与原始bean具有相同的接口,但是具有围绕目标bean方法编写的附加方面。
- 1. Spring框架错误创建ProxyFactoryBean
- 2. Spring的@Transactional在ProxyFactoryBean上的性能
- 3. 的Spring AOP的ProxyFactoryBean和ProxyFactory里并抛出ClassCastException
- 4. Spring如何从ProxyFactoryBean中获取具有原型范围的bean
- 5. @Autowired in bean not in spring context
- 6. @FormParameter in spring -mvc
- 7. Spring commonj.Workmanager in websphere
- 8. NoClassDefFoundError in spring
- 9. ConversionService in Spring
- 10. Curies in Spring HATEOAS
- 11. matlab webfigure in spring mvc
- 12. @AfterThrowing in Spring different behavior
- 13. @Resource in Spring does not work?
- 14. 分享spring beans in teracotta
- 15. In()使用spring jdbc吗?
- 16. LazyInitializationException Thread in Spring Roo 1.5
- 17. Spring Security Oauth2 in Rest API
- 18. 如何调试ProxyFactoryBean拦截器未触发
- 19. 如何将许多目标设置为ProxyFactoryBean?
- 20. 在ProxyFactoryBean中注入属性时,顺序是否重要
- 21. Datediff in Criteria operator in spring-data-mongodb does not working
- 22. Grails&Spring - in resources.groovy如何设置列表
- 23. 多列IN使用Spring的Sql
- 24. Bean名为 - Spring in Action有错误吗?
- 25. 使用java spring AbstractPreAuthenticatedProcessingFilter for“Keep me logged in”
- 26. LocaleResolver in filter null yet shows it has autowired! Spring MVC 3.1.1/Spring Security 3.1.0
- 27. Spring spring中的spring.jpa.open-in-view = true属性是什么?
- 28. Togglz with Spring @Configuration bean
- 29. ProxyFactoryBean不能正常工作的弹簧AOP
- 30. Spring状态机池错误
你在http://www.javalobby.org/java/forums/t44746.html看到过“粘合在一起”吗? – trashgod 2010-08-15 22:35:03