Spring AOPを構成すると、次のJSON結果が表示されなくなります:AOPExression1
<aop:pointcut id="dmhMethodExecution"
expression="within(com.aditya.dmh..*)" />
そこで、AOPExpression1をAOpExpression2として除外を追加しました。
<aop:pointcut id="dmhMethodExecution"
expression="within(com.aditya.dmh..*)
and !within(com.aditya.dmh.controller..*)" />
ASPECTJ式では、それでも、RESTful実装であるコントローラーからの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);
}
}
DEBUGメッセージに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フォーラムを見ると、Convertorは次の場合に自動的に構成されることがわかります。
<mvc:annotation-driven/>
使用されている。
AOPの構成に関する私の問題は、RequestResponseBodymethodProcessorが呼び出されていないことと関係がありますか。
これは、AOPExpression1を使用するときにコントローラーの周囲に作成されるプロキシと関係がありますか?AOPExpression2のように除外しても問題が発生するのはなぜですか。
任意の助けをいただければ幸いです