在普通Java类里使用spring里注入的service、dao等 空指针问题解决办法
在spring管理的web项目里,譬如Struts和spring的项目,配置好后,Struts里就可以直接使用定义好的service。但是如果要在普通的工具类里,使用service或dao,就会报空指针,因为这个普通的Java类并不在spring管理下,不能使用spring注入的service。
下面讲一个方法,让普通工具类也能使用service、dao。
定义一个类 SpringTool
1 import org.springframework.beans.BeansException; 2 import org.springframework.context.ApplicationContext; 3 import org.springframework.context.ApplicationContextAware; 4 import org.springframework.stereotype.Component; 5 6 /** 7 * 通过该类即可在普通工具类里获取spring管理的bean 8 * @author wolf 9 * 10 */ 11 @Component("springTool") 12 public final class SpringTool implements ApplicationContextAware { 13 private static ApplicationContext applicationContext = null; 14 15 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 16 if (SpringTool.applicationContext == null) { 17 SpringTool.applicationContext = applicationContext; 18 System.out.println( 19 "========ApplicationContext配置成功,在普通类可以通过调用ToolSpring.getAppContext()获取applicationContext对象,applicationContext=" 20 + applicationContext + "========"); 21 } 22 } 23 24 public static ApplicationContext getApplicationContext() { 25 return applicationContext; 26 } 27 28 public static Object getBean(String name) { 29 return getApplicationContext().getBean(name); 30 } 31 }
使用方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import app.util.spring.SpringTool; 2 public class Test { 3 4 public void print() { 5 ArticleService articleService = (ArticleService) SpringTool.getBean("articleService"); 6 Article article = articleService.queryById(756); 7 System.out.println(article.getTitle()); 8 } 9 }
转载于 http://blog.csdn.net/tianyaleixiaowu。