如何解决如何在 Spring Boot 中触发获取实体的回调帖子
@Service
@GetMapping
public Foo findByFooId(@RequestParam(name = "fid") String fooId) {
return fooService.findByFooId(fooId);
}
我想在 FooService 中使用不同的方法触发并保存查看过 Foo 的人。 它就像一个用于成功响应 findByFooId 的 postconstruct 回调。怎样才能做到这一点
解决方法
一种方法是自定义 HandlerInterceptor
实现。
- 拦截器的定义
public class FooViewerInterceptor extends HandlerInterceptorAdapter {
@Autowired
FooService fooService;
@Override
public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView)
throws Exception {
// if response succeeded ? http response code = 200 ?
// extract the "who" logic
// extract the fooId from request path
fooService.viewedBy(fooId,userId); // example...
}
}
- 注册拦截器。请注意使用自定义拦截器实例指定的路径模式.. 只是一个示例。
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new FooViewerInterceptor()).addPathPatterns("/foo/**");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。