Spring 在控制器的每个动作中引导添加 if 语句
Spring Boot add if statement in every action in controller
我需要根据服务的某些条件重定向控制器中的每个操作。
示例:
@RestController
public class MyController{
@Autowired
private MyService myService;
@GetMapping("/action1")
public String action1() {
if(myService.checkIfError()) {
return "redirect:/error";
} else {
// specific code of action1
}
}
@GetMapping("/action2")
public String action2() {
if(myService.checkIfError()) {
return "redirect:/error";
} else {
// specific code of action2
}
}
}
在上面的代码中,action1
和action2
都有一些特定的代码,但部分代码if(myService.checkIfError())return "redirect:/error";}
对所有操作都是相同的。
有人可以告诉我如何删除此样板代码,以便保留特定于操作的代码吗?
您可以为此使用过滤器:
@Component
public class YourFilter implements Filter {
@Autowired
private MyService myService;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
if (myService.checkIfError()) {
httpServletResponse.sendRedirect("/error");
return;
}
filterChain.doFilter(servletRequest, servletResponse);
}
}
Spring 启动将自动装配此过滤器,并将拦截所有请求。
我需要根据服务的某些条件重定向控制器中的每个操作。
示例:
@RestController
public class MyController{
@Autowired
private MyService myService;
@GetMapping("/action1")
public String action1() {
if(myService.checkIfError()) {
return "redirect:/error";
} else {
// specific code of action1
}
}
@GetMapping("/action2")
public String action2() {
if(myService.checkIfError()) {
return "redirect:/error";
} else {
// specific code of action2
}
}
}
在上面的代码中,action1
和action2
都有一些特定的代码,但部分代码if(myService.checkIfError())return "redirect:/error";}
对所有操作都是相同的。
有人可以告诉我如何删除此样板代码,以便保留特定于操作的代码吗?
您可以为此使用过滤器:
@Component
public class YourFilter implements Filter {
@Autowired
private MyService myService;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
if (myService.checkIfError()) {
httpServletResponse.sendRedirect("/error");
return;
}
filterChain.doFilter(servletRequest, servletResponse);
}
}
Spring 启动将自动装配此过滤器,并将拦截所有请求。