1、定义一个Adapter
public class BeanFactoryAdapter {
/**
* BeanFactory
*/
private static MyBeanFactory beanFactory;
/**
* getBean
* @param targetClass 要获取的类
* @return 返回结果
*/
public static <T> T getBean(Class<T> targetClass) {
return beanFactory.getBean(targetClass);
}
/**
* 注入BeanFactory
* @param beanFactory beanFactory
*/
public static void setBeanFactory(MyBeanFactory beanFactory) {
BeanFactoryAdapter.beanFactory = beanFactory;
}
}
2、自己定义一个MyBeanFactory
public interface MyBeanFactory{
<T> T getBean(Class<T> targetClass);
}
3、定义BeanPostProcessor一个处理类:获取BeanFactory工厂注入到Adapter中
@Component
public class BeanPostProcessor implements ApplicationListener<ContextRefreshedEvent> {
/**
* 将BeanFactory 设置到BeanFactoryAdapter中
* @param contextRefreshedEvent 上下文刷新事件
*/
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
ApplicationContext applicationContext = contextRefreshedEvent.getApplicationContext();
if (applicationContext.getParent() == null) {
BeanFactoryAdapter.setBeanFactory(applicationContext.getBean(MyBeanFactory.class));
}
}
}
上述可以完美解决一些spring的集成问题
1万+

被折叠的 条评论
为什么被折叠?



