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的集成问题