Java多執行緒中注入Spring的Bean-使用靜態方法直接取的容器中的spring物件
阿新 • • 發佈:2018-11-22
目前認為比較好的解決方案。
1,工具類
public class SpringApplicationContextHolder implements ApplicationContextAware { private static ApplicationContext context; @Override public void setApplicationContext(ApplicationContext context) throws BeansException { SpringApplicationContextHolder.context = context; } public static Object getSpringBean(String beanName) { return context == null ? null : context.getBean(beanName); } public static String[] getBeanDefinitionNames() { return context.getBeanDefinitionNames(); } }
2,在Spring配置中註冊工具類的bean
<bean class="xxx.SpringApplicationContextHolder" />
3,獲取
Xxxx xx= (Xxxx) SpringApplicationContextHolder.getSpringBean("xxx");