我正在尝试通过使用我的委托服务覆盖原始服务的bean定义来实现委托服务提供程序.但是,正如名称所暗示的那样,委托服务需要引用原始服务来委托调用.
我在使用原始bean def而不会遇到循环引用问题时,无法弄清楚如何覆盖bean定义.
例如:
<!-- Original service def in spring-context.xml -->
<bean id="service" class="com.mycompany.Service"/>
<!-- Overridden definition in spring-plugin-context.xml -->
<bean id="service" class="com.mycompany.DelegatedService"/>
<constructor-arg ref="service"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
这可能吗?
ska*_*man 11
对您的问题的简短回答是,您不能拥有两个具有相同名称的bean定义.如果你尝试,将隐藏另一个,只有一个定义可用.
您的问题的示例似乎表明您正在尝试将原始service
bean 包装在代理对象中,其中包装器会围绕对服务的调用执行一些前后工作.实现这一目标的一种方法是,在不定义两个service
bean的情况下,并且不修改原始service
bean,就是使用Spring AutoProxyCreator
,可能是一个BeanNameAutoProxyCreator
.
这允许您列出要自动代理的bean(或bean).您可以指定要应用于目标bean上的调用的拦截器.您将实施这些拦截器来完成您需要做的工作.
Spring会自动为您创建一个委托代理,它将具有以前的bean ID service
,但具有您的附加功能.
归档时间: |
|
查看次数: |
29944 次 |
最近记录: |