如果再写一些工具类包括过滤器和监听器的时候,需要使用到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.方法