Spring Boot自动配置顺序

我想创建一个Spring Boot" title="Spring Boot">Spring Boot自动配置类(有条件地)创建一个bean A。然而,挑战在于,必须在BSpringBoot的默认自动配置类之一中创建另一个bean之前创建该对象。Bean B不依赖A

我的第一次尝试是使用@AutoConfigureBefore。根据我的预期,这种方法不起作用,从DaveSyer的评论来看,它不应该如此。

背景知识:上述bean A更改了Mongo数据库,并且必须在MongoTemplate创建之前进行。

回答:

事实证明,我想要的是动态地使实例B依赖A。这可以通过使用来实现BeanFactoryPostProcessor,以改变bean定义的B豆类。

public class DependsOnPostProcessor implements BeanFactoryPostProcessor {

@Override

public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

String[] beanNames = BeanFactoryUtils.beanNamesForTypeIncludingAncestors(

beanFactory, B.class, true, false);

for (String beanName : beanNames) {

BeanDefinition definition = beanFactory.getBeanDefinition(beanName);

definition.setDependsOn(StringUtils.addStringToArray(

definition.getDependsOn(), "beanNameOfB");

}

}

}

这适用于纯Spring,不需要Spring

Boot。要完成自动配置,我需要将的bean定义添加DependsOnPostProcessor到实例化bean的配置类中A

以上是 Spring Boot自动配置顺序 的全部内容, 来源链接: utcz.com/qa/414791.html

回到顶部