Java Spring@Configuration运行时注入

Java Spring@Configuration运行时注入,java,spring,Java,Spring,在我的非启动Spring5项目中,我需要手动注册和初始化一些bean之后我想向上下文添加一个@Configuration类,该类从外部库导入配置: @Configuration @Import(ExtLibConfig.class) public class MyExtLibConfig { @Bean public ExtLibBean extLibBean() { return ExtLibBean.builder().build(); } } ExtLibConfi

在我的非启动Spring5项目中,我需要手动注册和初始化一些bean之后我想向上下文添加一个
@Configuration
类,该类从外部库导入配置:

@Configuration
@Import(ExtLibConfig.class)
public class MyExtLibConfig {

  @Bean
  public ExtLibBean extLibBean() {
   return ExtLibBean.builder().build();
  }

}
ExtLibConfig
有许多自己的
@组件scan
@Import
,我希望它们都能自动配置,包括我的
ExtLibBean

可以在运行时这样做吗?外部库扫描
ApplicationContext
,我需要它在添加手动注册的bean时进行扫描

UPD
有关bean寄存器顺序的问题不是实际的。ext库在刷新后正在扫描
ApplicationContext
,因此我需要我的bean此时在那里

解决方案是实现
BeanDefinitionRegistryPostProcessor

public class MyMockBeanDefinitioRegistrynPostProcessor implements BeanDefinitionRegistryPostProcessor {

    @Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        // registry.registerBeanDefinition(mockBeanClass, mockBeanDefinition);...

    }

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        // nothing to do
    }

然后将其声明为
Bean

@Configuration
public class MockBeanConfig {

    @Bean
    public MyMockBeanDefinitioRegistrynPostProcessor mockBeanDefinitionPp() {
        return new MyMockBeanDefinitioRegistrynPostProcessor();
    }

}
并将其添加到上下文中:

AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();

context.register(MockBeanConfig.class);
context.register(MyExtLibConfig.class);

context.refresh();

不清楚您指定“之后”是什么意思。这样对bean初始化进行排序的目的是什么?@chrylis我正在尝试将mock添加到
ApplicationContext
,以便ext-lib可以将它们扫描为bean