У меня есть наш аспект, аннотаций & MVC контроллер записывается следующим образом:аспект не вызывался в Spring MVC
Aspect
@Aspect
public class AuditAspect {
@Around(value = "@annotation(com.test.Audit)")
public Object audit(ProceedingJoinPoint pjp) {
System.out.println("Inside the Audit aspect ...");
Object result = null;
try {
result = pjp.proceed();
} catch (Throwable t) {
}
return result;
}
}
аннотаций:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Audit
{
AuditType auditType();
}
Контроллер:
@RestController
@RequestMapping("/patients")
public class PatientController {
@Audit(auditType = AuditType.PATIENT_LIST)
@RequestMapping(value="", method=RequestMethod.GET)
public APIResponse getPatients(HttpServletRequest request, HttpServletResponse response, @RequestParam(required = false, value="audit") String sAudit) {
System.out.println("Inside getPatients ...");
return null;
}
}
Однако метод аудита аспекта не получает вызов, когда я делаю запросы на отдых.
Оказался для помощи. Нашел несколько сообщений, в которых упоминалось о том, что AspectJ не работает с контроллерами Spring MVC. Тем не менее, я попробовал этот же пример с простым весовым приложением MVC, и этот аспект получил правильное название, даже если методы контроллера были аннотированы. Не уверен, что здесь происходит. Любые указатели/предложения здесь были бы очень полезными.
Образец приложения, в котором я пытался, не имел использования диспетчера транзакций весны или интеграции с спящим и т. Д. Разве это имеет значение?
Кроме того, данный ниже пункты контекстного файла:
<aop:aspectj-autoproxy />
<context:component-scan base-package="com.test">
<context:include-filter type="aspectj" expression="com.test.AuditAspect" />
</context:component-scan>
<context:annotation-config />