在java项目中 dao实例和service实例在调用的时候报空指针异常


 如果再写一些工具类包括过滤器和监听器的时候,需要使用到dao或者service中的方法,这个时候如果按照平时那样获取系统会直接报空指针异常,提示找不到。原因就是在项目启动的时候这些工具类中的service或者dao还没有来得及注入。解决办法:

传统ssh项目中,只需要单独写个方法,然后在使用的时候直接使用这个方法获取即可

public IUtilService getService(){
		
IUtilService service = (IUtilService)BeanProvider.getService("IUtilService");
return service;}

Spring MVC项目

@Component
public class UtilFilter implements Filter {
	
	@Autowired
	private UtilService utilService;//需要调用的service
	
	public void setUtilService(UtilService utilService) {
		this.utilService = utilService;
	}
	//在spring初始化之前,初始化一个静态类 就是把自己本身初始化成静态类
    private static UtilFilter filter;
    	
	@PostConstruct
	public void init1(){
		filter = this;  
		filter.utilService = this.utilService;   // 初使化时将已静态化的UtilService实例化  
	}
}
注意:最后调用的时候一定是filter.utilService.方法

猜你喜欢

转载自blog.csdn.net/songyanfei1205/article/details/80050412