我在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
,但没有设法将所有部分连接起来。
答案 0 :(得分:0)
我认为您需要在Spring中使用 AOP 。这非常有用。它使用事务管理和日志记录等。
Spring AOP (面向方面的编程)框架用于模块化各个方面的跨领域关注点。如果您想要一个更简单的定义,则可以将它们视为拦截器,但可以进行更多配置。在春季,有两种不同的构造称为“拦截器”。首先,有一些处理程序拦截器,它们是Spring MVC框架的一部分,使您能够向请求中添加拦截器逻辑。但是您也有方法拦截器,它是Spring AOP 框架的一部分。这些是比Handler Interceptor更通用的机制,但也可能更复杂。在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/