1 回答
TA貢獻1884條經驗 獲得超4個贊
解決方案是實現BeanFactoryPostProcessor接口。這使我們能夠在任何 bean 被實例化之前訪問,因此允許我們更改范圍之類的東西,或者使 bean 延遲初始化,甚至更改 bean 的構造函數參數!BeanDefinition
如果您的 spring 應用程序是手動啟動的,即通過創(chuàng)建一個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注釋才能工作
添加回答
舉報
