`

拦截器Autowired注入服务(工具类)空指针

 
阅读更多

代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.cache.CacheUtil;

/**
 * 类名: ValidateInterceptor
 * 描述: 校验拦截器
 */
public class ValidateInterceptor implements HandlerInterceptor {

	private static UnLogger logger = UnLogger.getLogger(ValidateInterceptor.class);
	
	@Autowired
	CacheUtil cacheUtil;
	
	@Override
	public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
		boolean checkResult=true;
		//指定允许其他域名访问  
		response.addHeader("Access-Control-Allow-Origin", "*");
		//响应类型  响应方法
		response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); 
		response.setHeader("Access-Control-Allow-Headers", "Content-Type");  
		response.addHeader("Access-Control-Max-Age", "30");   
                //省略
		String token = request.getParameter("token");
                //位置1
		//校验
		if(StringUtils.isNotEmpty(token)){
			try{
				if(StringUtils.isNotEmpty(cacheUtil.get(token))){ //报错,空指针异常
					cacheUtil.expire(token, Constant.TOKEN_EFFECTIVE_TIME);
					checkResult = true;
				}
			}catch(Exception e){
				logger.error("redis异常!");
				e.printStackTrace();
				sessionVerify(request, response, checkResult);
			}
		}else{
			sessionVerify(request, response, checkResult);
		}
		return checkResult;
	}
        //省略
}

 

解决办法,在位置1加上下面的代码就可以了:

 

//注入失败
if(cacheClusterUtil == null){
	WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
	cacheUtil = wac.getBean(CacheUtil.class);
}
引入:
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

 

 

分享到:
评论

相关推荐

    ip黑白名单拦截器java示例

    IP拦截器是实现这一策略的工具,黑名单用于阻止特定IP的访问,而白名单则是允许指定IP的访问。在实际应用中,通常结合使用这两种策略,以提供更灵活的安全控制。 综上所述,这个Java示例提供了实现IP黑白名单拦截...

    CXF和Spring整合,并且添加拦截器

    4. **添加拦截器**:CXF允许我们定义拦截器,以便在服务调用前后执行自定义逻辑。这可以通过在Spring配置文件中声明拦截器并将其绑定到Bus或Endpoint来实现。 ```xml ``` 5. **测试客户端**:`...

    struts2 spring ibatis整合以及拦截器日志记录

    Struts2、Spring和iBatis是Java Web开发中三个重要的框架,...拦截器和日志记录是提高系统稳定性和安全性的重要工具,对于开发和运维具有重要意义。理解并掌握这些技术,能帮助开发者更好地应对复杂的企业级项目需求。

    【SpringBoot拦截器】(csdn)————程序.pdf

    获取 IP,打印日志 TODO 后续优化为统一工具类 String ip = IpUtils.getIpAddress(httpServletRequest); // 3.从请求头获取 Token String token = httpServletRequest.getHeader("token"); // 4.Token 为空...

    SpringBoot第 4 讲:SpringBoot+Rest+拦截器

    在本教程中,我们将深入探讨如何使用SpringBoot构建RESTful Web服务,并结合拦截器实现更高效、可控的服务。首先,让我们理解REST(Representational State Transfer)的核心概念,它是一种架构风格,用于设计网络...

    SpringBoot-自定义注解AOP实现及拦截器示例

    为了使自定义拦截器生效,我们需要在配置类中将其添加到拦截器链中: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private CustomInterceptor customInterceptor;...

    SpringBoot拦截器的使用小结

    在Spring Boot应用中,拦截器(Interceptor)是一个强大的工具,它可以让我们在请求处理前后执行自定义逻辑,例如权限校验、日志记录等。这里我们将深入探讨如何在Spring Boot中设置和使用拦截器。 首先,我们需要...

    java SpringMVC动态数据源的DataSource工具类

    本篇将详细讲解如何在SpringMVC中实现动态数据源的DataSource工具类。 首先,我们来看`MultiDataSource.java`这个文件。它通常会定义一个`DataSource`的工厂类,用于根据不同的需求动态地返回不同的数据源。在...

    spring依赖注入的实现原理

    例如,使用`@Autowired`注解可以自动找到匹配类型的bean进行注入,而`@Qualifier`则可以指定特定的bean。此外,`@Resource`注解也可以用于字段或setter方法的注入,主要用于JSR-250规范的支持。 六、最佳实践 1. ...

    java SpringBoot自定义注解,及自定义解析器实现对象自动注入操作

    在 Java 中,注解(Annotation)是用来对类、方法、变量等元素添加信息的metadata,它可以被编译器、IDE、框架等工具所读取和使用。在 SpringBoot 框架中,自定义注解可以用来实现对象自动注入操作。例如,在上面的...

    struts2+spring连接webservice jar包

    - 可能还有其他如log4j.jar、commons-lang3.jar等辅助库,用于日志管理和通用工具类。 总之,这个“struts2+spring连接webservice jar包”是为了在Struts2和Spring框架基础上,方便开发者调用Webservice服务而准备...

    Hibernate、Spring、Struts2整合架包

    它基于拦截器模型,提供了一系列可插拔的拦截器,可以方便地扩展和定制行为。Struts2与Spring结合,可以通过Spring插件实现Action的依赖注入,从而简化代码和提高可测试性。 **Hibernate框架** 是Java领域中著名的...

    today-context一个轻量级依赖注入框架

    4. **AOP(面向切面编程)支持**:today-context可能支持类似于AspectJ的切面编程,允许开发者定义拦截器、通知等,实现非业务逻辑代码的分离。 5. **事件传播(Event Propagation)**:框架内可能有事件发布和订阅...

    Struts2整合Spring、JPA

    4. **Action类和业务服务**:Action类通常被声明为Spring的Bean,这样它们可以在Spring容器中被管理,同时可以通过@Autowired注解注入业务服务。业务服务则负责调用JPA进行数据操作。 5. **拦截器集成**:Struts2...

    Struts2+Spring2.5+Hibernate3.3整合开发

    Struts2作为MVC框架处理前端请求和业务逻辑展示,Spring提供了依赖注入(DI)和面向切面编程(AOP),以及服务层管理,而Hibernate则是一个强大的对象关系映射(ORM)工具,负责数据库操作。 Struts2整合Spring主要...

    Maven+SpringMVC+Dubbo 简单的入门demo配置 源码

    创建Controller类并使用注解如@RequestMapping来定义路由,以及@Service和@Autowired注解来注入服务和依赖。 然后是Dubbo的核心部分。Dubbo是一个高性能、轻量级的服务治理框架,主要用于实现微服务间的远程调用。...

    Struts2+Hibernate+Spring 整合示例

    2. **配置Struts2**:配置struts.xml,声明Action类,这些Action类通常会由Spring管理,通过@Autowired注解注入需要的服务或DAO。 3. **配置Hibernate**:配置hibernate.cfg.xml,设置数据库连接信息,创建...

    SSH框架技术试卷+答案.docx

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是一种...以上就是SSH框架的一些核心知识点,涵盖了Struts2的标签、配置、拦截器,Spring的依赖注入,以及Hibernate的对象关系映射,还有MVC设计模式的基本概念。

    Ssi的整合(Struts2+Spring+Ibatis)

    配置Struts2拦截器栈,以便使用Spring进行依赖注入。 3. **配置Spring**:创建spring.xml文件,定义Bean的配置,包括Action类、Service类、DAO类以及数据源、SqlSessionFactory等。开启AOP事务管理。 4. **配置...

    使用三大框架编写登陆模块出现的一个很蛋疼的问题解析--另附测试通过的登录模块程序

    5. **拦截器问题**:Struts2的拦截器可能会影响登录逻辑,比如没有正确配置或拦截器顺序错误,可能会导致登录失败。 针对以上问题,可以采取以下解决策略: 1. **调试和日志**:使用IDE的调试工具,结合日志输出,...

Global site tag (gtag.js) - Google Analytics