将懒加载关闭,@Lazy(false),默认为true
@Service @Lazy(false) public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; //获取上下文 public static ApplicationContext getApplicationContext() { return applicationContext; } //设置上下文 public void setApplicationContext(ApplicationContext applicationContext1) { applicationContext = applicationContext1; } //通过名字获取上下文中的bean public static Object getBean(String name){ return applicationContext.getBean(name); } //通过类型获取上下文中的bean public static Object getBean(Class<?> requiredType){ return applicationContext.getBean(requiredType); } }
SystemConfig systemConfig = (SystemConfig)SpringContextUtil.getBean("systemConfig");
//将applicationContext转换为ConfigurableApplicationContext
ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) SpringContextUtil.getApplicationContext();
// 获取bean工厂并转换为DefaultListableBeanFactory
DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableApplicationContext.getBeanFactory();
// 通过BeanDefinitionBuilder创建bean定义
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(SystemConfig.class);
// 设置属性userService,此属性引用已经定义的bean:userService,这里userService已经被spring容器管理了.
// beanDefinitionBuilder.addPropertyReference("systemConfig", "systemConfig");
// 注册bean
defaultListableBeanFactory.registerBeanDefinition("systemConfig", beanDefinitionBuilder.getRawBeanDefinition());
SystemConfig systemConfig = (SystemConfig) SpringContextUtil.getBean("systemConfig");