Java Spring@Configuration运行时注入
在我的非启动Spring5项目中,我需要手动注册和初始化一些bean之后我想向上下文添加一个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
@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