我已經實現了一個使用Spring.My restController代碼如下給出的休息webservice。我已經創建了攔截器,你已經在上面的帖子中提出了建議。我能夠得到休息響應但請求沒有得到intercepted.Could請你幫我找出什麼是錯我的代碼:`攔截器與彈簧REST服務
import java.lang.reflect.Method;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptorAdapter() {
Logger logger = LoggerFactory
.getLogger(WebConfig.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod) {
logger.info("Request URL::");
HandlerMethod handlerMethod = (HandlerMethod) handler;
// Method method = handlerMethod.getMethod();
/** logger.info("{} - {} - method '{}' on controller '{}'",
request.getMethod(), request.getRequestURI(), method.getName(),
handlerMethod.getBean().getClass()
);*/
logger.info("Request URL::" + request.getRequestURL().toString()
+ ":: Start Time=" + System.currentTimeMillis());
}
return true;
}
});
}
}
`
@RestController
@RequestMapping(/v1/search)
public class RestController {
@Autowired
@Qualifier("repoService")
private IRepoService repoService;
private static final Logger logger = Logger.getLogger(RestController.class);
@RequestMapping(value = "/{id}" ,method = RequestMethod.GET)
public List<RepVO> getRepById(@PathVariable String id)
List<RepVO> repVOList = repoService.getRepById(id);
logger.info("Response received");
return repVOList ;
}
}
我已經添加的配置文件作爲below.Still它不工作:
@EnableWebMvc
@Configuration
class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptorAdapter() {
Logger logger = LoggerFactory
.getLogger(WebConfig.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod) {
logger.info("Request URL::");
HandlerMethod handlerMethod = (HandlerMethod) handler;
// Method method = handlerMethod.getMethod();
/** logger.info("{} - {} - method '{}' on controller '{}'",
request.getMethod(), request.getRequestURI(), method.getName(),
handlerMethod.getBean().getClass()
);*/
logger.info("Request URL::" + request.getRequestURL().toString()
+ ":: Start Time=" + System.currentTimeMillis());
}
return true;
}
});
}
}
wouldnt它更有意義使用@ControllerAdvice並與該實現ResponseBodyAdvice?在我看來你有更多的靈活性,並且你可以改變響應的主體 –