当我们配置 Spring AOP 时,JSON 结果消失:AOPExression1
<aop:pointcut id="dmhMethodExecution"
expression="within(com.aditya.dmh..*)" />
所以我添加了一个排除项:AOPExpression1 as AOPExpression2
<aop:pointcut id="dmhMethodExecution"
expression="within(com.aditya.dmh..*)
and !within(com.aditya.dmh.controller..*)" />
在 ASPECTJ 表达式中,我仍然看不到来自控制器的 JSON 结果,这是一个安静的实现。
package com.aditya.dmh.controller;
@Controller
public class EmployeeController {
private EmployeeServiceInterface employeeService;
@Autowired
public void setEmployeeService(EmployeeServiceInterface employeeService) {
this.employeeService = employeeService;
}
@RequestMapping("/employeeservices/1/allemployees.view")
public @ResponseBody Result<EmployeeModel> getEmployees(){
return employeeService.getEmployees(0, 10);
}
}
当我将 log4j 用于调试消息时,我看到以下内容:
15:37:04.214 [http-8090-1] DEBUG o.s.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'dmhServiceDispatcher': assuming HandlerAdapter completed request handling
15:37:04.214 [http-8090-1] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
当我删除 AOP 时,JSON 结果开始出现,我看到附加的调试消息。
17:11:36.270 [http-8090-2] DEBUG o.s.w.s.m.m.a.RequestResponseBodyMethodProcessor - Written [com.aditya.Result@8a85268] as "application/json;charset=UTF-8" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@62ba2e48]
查看 Spring 论坛,我了解转换器是自动配置的,当
<mvc:annotation-driven/>
用来。
我配置 AOP 的问题是否与未调用 RequestResponseBodymethodProcessor 有任何关系。
这与我使用 AOPExpression1 时在我的控制器周围创建的代理有什么关系吗?为什么 AOPExpression2 中的排除仍然存在问题。
任何帮助,将不胜感激