我在Spring上有一个拦截器,可以拦截用户的请求。我想计算申请的持续时间并保存到数据库中。然而,Spring不会自动连接我的豆子,导致服务上的空点异常。
这是代码:
import java.time.Duration;
import java.time.ZonedDateTime;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
/**
*
* @author Shadows
*/
@Component
public class Interceptador implements HandlerInterceptor {
@Autowired
LogService service;
public Interceptador() {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//Create the log
Log log = new Log();
//Catch the URI the user is trying to access
log.setPath(request.getRequestURI());
//Set the log to request attr
request.setAttribute("log", log);
//
return HandlerInterceptor.super.preHandle(request, response, handler);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//Retrieve the log
Log log = (Log) request.getAttribute("log");
//Calculate the time of the requisition
log.setDuracao(Duration.between(log.getDataCriacao(), ZonedDateTime.now()));
//java.lang.NullPointerException:
service.save(log);
System.out.println(log.getDuracao());
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
我如何避免这个NPE?
您需要注册您的间歇器。
这是一个有答案的相同问题:无法在HandlerInterceptorAdapter中自动连接服务
这是链接到贝尔东的例子:https://www.baeldung.com/spring-mvc-handlerinterceptor
我需要使用拦截器验证并记录grpc服务请求的一些数据。我检查了ServerInterceptor的interceptCall,但找不到获取请求对象的方法。有没有办法让请求对象进入拦截器?
我尝试用java制作一个discord patchbot(数据位于动态网站上)。而应用程序在eclipse中工作,并作为。在我的桌面上,我无法让它在服务器上正常工作。服务器是sparkedhost的java服务器。 每次启动时,都会发生以下错误:
问题内容: 我正在使用Java EE 6和Jboss AS7.1,并尝试使用拦截器绑定(来自jboss网站的示例)。 我有一个InterceptorBinding注解: 拦截器: 还有一个豆: 但是拦截器没有被称为。。。 在编写此代码时将调用拦截器: 谢谢你的帮助。 问题答案: 您是否按照参考示例中的说明启用了拦截器? 缺省情况下,bean档案没有通过拦截器绑定绑定的已启用拦截器。必须通过将侦听器
我正在使用Spring并试图用AspectJ编写示例应用程序。我需要学习如何拦截静态方法调用。在我的示例中,我尝试截取main方法,如下所示: Spring配置文件: 主要方法: 协会本身: 但是当我运行应用程序时,唯一的字符串正在打印。
1. 前言 拦截器这个名词定义的非常形象,就像导弹要攻击目标的时候,可能会被先进的反导系统拦截,此处的反导系统就是一种拦截器。 我们开发的应用,对外暴露的是控制器中定义的 API 方法,我们可以在 API 方法的外围放置拦截器,所有对 API 的访问都可以通过拦截器进行过滤。 OK,那么这样的拦截有什么意义吗,其实已经很明显了,反导系统可以保护目标的安全并识别对目标的攻击行为。同理,拦截器可以跟踪
问题内容: 我尝试了一些来自hibernate 4.0拦截器的 代码,该代码为使用会话级拦截器提供了以下代码: 但是,我同时检查了hibernate-core 4.0源代码和onliehibernate 4.0 java- doc ,该类没有方法,但是hibernate 3.6 java- doc确实具有此方法。 有人知道该方法移到哪里吗?如果已弃用,为什么文档仍将其保留在教程文档中?在4.0中如