我知道bean加载的顺序是由依赖关系和传递依赖关系隐式确定的。
想象一下,您有一组带注释的bean,它们为您提供了一些要应用于另一组AwareBeans的元数据。因此,只有在收集了来自N个bean的所有元数据之后,才能在此之后发布AwareBeans。您通常会将org.springframework.beans.factory.config.BeanPostProcessor
用于此类内容。如何处理订单呢?我认为即使设置depends-on
显然也没有优先于依赖关于加载顺序,对吗?
有一个接口org.springframework.core.Ordered
只能确定应用的beanPostProcessors的顺序,而不是bean的顺序。
我可以使用org.springframework.beans.factory.config.BeanFactoryPostProcessor
但bean定义在bean实例化之前没有足够的信息。例如beanDef.getBeanClass()
返回bean类名等。
你能想到如何做我想做的事吗?
答案 0 :(得分:0)
你可以:
a)在BeanPostProcessor
。
b)让你的后处理器在启动时主动从应用程序上下文中获取所有元数据bean。
每种方式都有优点和缺点,但效果是一样的:在BeanPostProcessor
postconstruction之后,每个元数据bean也已经过后构建。
答案 1 :(得分:0)
我通过使用org.springframework.beans.factory.config.BeanFactoryPostProcessor
并通过类加载器加载类来解决它,以便我可以使用Reflection来获取注释。我认为它不应该破坏任何东西,因为之后当spring将要加载bean类时,classloader会检查是否已经加载了类,如果是,则不加载它。否则加载它。