java - 基于注解拦截spring mvc控制器调用
问题描述
我在spring MVC中有以下控制器
@GetMapping("/id/kw")
public ModelAndView industryWater(HttpServletRequest request) {
return someMAV
}
我想根据自定义注解切入控制器的执行
@GetMapping("/id/kw")
@WaterBefore
@WaterAfter
public ModelAndView industryWater(HttpServletRequest request) {
return someMAV
}
我可能可以使用 BEAN postProcessor 注入一些东西,但我不知道如何将注入的部分与控制器执行挂钩。我还需要request
mav
在实现我的water aspect
.
我研究了一下BeanPostProcessor
,,Interceptor
但没有设法连接所有部分。
解决方案
我认为您需要在 Spring中使用AOP 。这非常有用。它使用事务管理和使用日志记录等。
Spring AOP(面向切面编程)框架用于模块化切面中的横切关注点。如果您想要一个更简单的定义,您可以将它们视为拦截器,但可能有更多选项配置。在 Spring 中有两种不同的构造被称为“拦截器”。首先,有处理程序拦截器,它是 Spring MVC 框架的一部分,让您能够将拦截器逻辑添加到请求中。但是您也有方法拦截器,它们是 Spring AOP框架的一部分。这些机制比处理程序拦截器更通用,但也可能更复杂。在 AOP 术语中,这样的拦截器提供了一种对您正在谈论的“方面”进行编码的方法。
像这样 :
@Pointcut(" execution (* com.your.controller.industryWater(..))")
public void pointcutDemo() {}
@Before("pointcutDemo())")
public void logBefore(){ }
@After("pointcutDemo())")
public void logAfter(){ }
链接:https ://www.mkyong.com/spring3/spring-aop-aspectj-annotation-example/
推荐阅读
- json - 我怎么能在子模块中使用相同的 tslint.json 呢?
- java - 处理程序和接口可运行 - 具有新线程
- visual-studio-2017 - 在 Visual Studio 2017 中更改窥视窗口的颜色不起作用
- powerquery - 如何将excel单元格作为查询参数的源文件?
- angular - Angular 6 - 反应式表单内的自定义控件
- c# - 使用 Entity Framework 配置 ASP.NET Core:“没有为此 DbContext 配置数据库提供程序”
- http - 离子 HTTP POST 回复 net::ERR_NAME_NOT_RESOLVED
- r - 将 sf voronoi 多边形裁剪到边界框时出错
- microsoft-graph-api - 无法更新 OneNote 页面内容
- javascript - 对象组数组