2012-09-29 42 views
0

我意识到bean加载的顺序是由依赖关系和传递依赖关系隐式确定的。在没有明确配置的情况下更改bean后处理顺序

想象一下,你有一组注释的bean为您提供某种元数据要应用到另一组AwareBeans的。因此,只有在收集了N个Bean的所有元数据后,才可以在后处理AwareBeans。你通常使用org.springframework.beans.factory.config.BeanPostProcessor这种东西。如何处理订单?我认为,即使设置depends-on明确不会优先于加载顺序依赖关系,对吧?

有一个接口org.springframework.core.Ordered,仅仅确定BeanPostProcessor的量级上被施加,但不是豆的顺序。

我可以使用org.springframework.beans.factory.config.BeanFactoryPostProcessor但bean定义并没有豆实例化之前的足够信息。例如beanDef.getBeanClass()回报bean类名等

是,任何其他方式,你能想到的,怎么做我想要什么?

回答

0

我用org.springframework.beans.factory.config.BeanFactoryPostProcessor和装载类加载器通过,这样我可以使用反射来抓住注解解决它。我认为它不应该破坏任何东西,因为之后Spring将要加载类加载器时,类加载器将检查类是否已加载,如果是,则不会加载它。否则它加载它。

0

您可以:

一)注入你的所有元数据豆你BeanPostProcessor

b)使后处理器在启动时主动从应用程序上下文中获取所有元数据bean。

每种方法都有利弊,但效果是一样的:后BeanPostProcessor postconstruction,每一个元数据bean将已经过postconstructed。

+0

我故意提到“没有明确的配置”,这意味着其他的话:“我做一个库,要由第三方使用的”)没有用的......至于B),它不会使由于存在bean依赖关系而有意义... – lisak

相关问题