0

这是一个简短的:我想修改 spring 实例化我的 bean 的方式(在这种情况下,通过创建代理而不是简单地实例化它)。

我不能使用 Jdk Dynamic Proxies 或 cglib 来生成代理(如果是这种情况,我可以使用 spring aop)。

在我看来,最好的方法是扩展 spring 的 bean 工厂(并告诉 spring 使用我的工厂),但我在 Google 上找不到如何做到这一点。

对此有什么想法吗?

编辑:

实际上,看起来最标准的方法是使用 BeanPostProcessor(http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/BeanPostProcessor.html ),并使 PostProcessor 将 bean 包装在代理上。

如果我们无法在这里找到更好的解决方案(并且我们认为这是一个有价值的问题),我会发布这个作为答案。

4

2 回答 2

2

去这里的方法是实现一个 BeanPostProcessor( http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/BeanPostProcessor.html ),并使那个 BeanPostProcessor将 bean 包装在代理上,在“postProcessBeforeInitialization”上。

于 2009-07-23T18:07:58.430 回答
-1

您只需要扩展AbstractApplicationContext

那是容易的部分。

我遇到的困难部分是:如果您不能使用动态代理或 CGLIB,您打算使用什么方法?

我的建议?不。你想象的“特殊需要”是虚构的,你无法想出比罗德约翰逊已经为你提供的更好的方法。

如果你能发布一个清晰的解释来说服我,我会删除我的答案。

于 2009-07-23T00:05:22.600 回答