手动注入bean
一、工具類
public class SpringCtxUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;private static DefaultListableBeanFactory defaultListableBeanFactory;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {AnycloudApplication.applicationContext = applicationContext;defaultListableBeanFactory = (DefaultListableBeanFactory)applicationContext.getAutowireCapableBeanFactory();}public static <T> T getBean(Class<T> clazz) {BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz);String className = clazz.getName();defaultListableBeanFactory.registerBeanDefinition(className, beanDefinitionBuilder.getBeanDefinition());return (T) applicationContext.getBean(className);}public static void destroy(String className){defaultListableBeanFactory.removeBeanDefinition(className);System.out.println("destroy " + className);} }二、使用工具類注入類
UserService userService= SpringCtxUtil.getBean(UserService.class);三、注意
?在我們需要調用的類前加上注解@Primary
@Primary public Class UserService {}如果我們在需要注入的類中使用了@Transactional注解,一般會導致注入失敗,請參考下面的博文
?https://blog.csdn.net/weixin_36524613/article/details/85258442
?
總結
- 上一篇: SpringBoot使用@Transac
- 下一篇: Yum database disk im