1 回答
TA贡献1884条经验 获得超4个赞
解决方案是实现BeanFactoryPostProcessor
接口。这使我们能够在任何 bean 被实例化之前访问,因此允许我们更改范围之类的东西,或者使 bean 延迟初始化,甚至更改 bean 的构造函数参数!BeanDefinition
如果您的 spring 应用程序是手动启动的,即通过创建一个SpringApplicationBuilder
,那么您甚至可以将此类的实例传递给构建器的构造函数,一旦应用程序启动,它就会被使用。
@Component
public class FooBarBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(@NonNull ConfigurableListableBeanFactory beanFactory) throws BeansException {
/*
String[] fooBeans = beanFactory.getBeanNamesForAnnotation(Foo.class);
BeanDefinition bean = beanFactory.getBeanDefinition(...);
/* do your processing here ... */
}
}
需要ps@Component
注释才能工作
添加回答
举报