首页 > 解决方案 > 是否可以在 BeanFactoryPostProcessor 中应用 @Order

问题描述

我正在尝试根据各种因素在启动期间更新多个 bean 的优先级。我已经扫描了文档,看来订购 bean 优先级的唯一方法是 via@OrderOrdered interface.

像下面这样的可能吗?

@Component
public class MyCustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException {
        for (String name: factory.getBeanDefinitionNames()) {
            BeanDefinition definition = factory.getBeanDefinition(name);
            
            // Some custom logic to determine the order based on other beans registered
            
            definition.setOrder(x);
        }
    }
}

如果上述不可行,那么 spring 中的哪些机制负责使用@Orderand Ordered interface。这些机制是否可以覆盖?

标签: javaspringspring-boot

解决方案


推荐阅读