不,但如果您无权访问代码,您仍然可以使用 xml
<bean id="initiatedSecond" class="..." depends-on="initiatedFirst" />
<bean id="initiateThird" class="..." depends-on="initiatedSecond" />
等等...
编辑
其他选项是使用 a BeanFactoryPostProcessor
通过添加依赖项BeanDefiniton.setDependsOn(String[])
。
例如(未测试)
public class DependencyConfigurer implements BeanFactoryPostProcessor {
private Map<String, String[]> dependencies = new HashMap<String, String[]>();
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
for (String beanName : dependencies.keySet()) {
BeanDefinition bd = beanFactory.getBeanDefinition(beanName);
bd.setDependsOn(dependencies.get(beanName));
}
}
public Map<String, String[]> getDependencies() {
return dependencies;
}
public void setDependencies(Map<String, String[]> dependencies) {
this.dependencies = dependencies;
}
}
另一种选择是让一个众所周知的早期实例化 bean 依赖于您的 bean。(看起来很难看,但会起作用)。
最后,您可以覆盖AbstractApplicationContext.onRefresh()
并实例化您的 bean。