Tom*_*icz 56
如果bean A通过定义依赖于bean B<property/>
,@Autowired
或者<constructor-arg/>
然后Spring容器强制并修复了该命令.这里没问题.
但是,如果您想强制执行特定的bean创建顺序,而不是通过显式依赖关系表达,请随意使用:
<bean id="A" depends-on="B"/>
<bean id="B"/>
Run Code Online (Sandbox Code Playgroud)
或更好(带注释,也适用于@Bean
Java配置):
@Service
@DependsOn("B")
public class A {}
Run Code Online (Sandbox Code Playgroud)
甚至更好......不要使用它.这些构造是一种代码气味,并且经常暗示您的组件之间存在一些令人讨厌的不可见依赖关系.
小智 7
同意Tomasz提供的答案.如果你知道bean A依赖于bean B那么这是正确的方法.
有时你有逻辑应该在所有bean实例化之前执行.在这种情况下,您可以使用BeanFactoryPostProcessor.Spring首先创建并执行BeanFactoryPostProcessors,然后只创建并执行所有其他bean.同时,如果BeanFactoryPostProcessor依赖于某些bean A,则可以使用属性或构造函数注入.在这种情况下,Spring将首先创建bean A,然后是BeanFactoryPostProcessor,调用BeanFactoryPostProcessor,然后仅在上下文中实例化所有其他bean.
归档时间: |
|
查看次数: |
32254 次 |
最近记录: |