2015-03-20 2 views
1

У меня есть наш аспект, аннотаций & 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 /> 

ответ

1

Для того, чтобы сделать Spring AOP работу, как ваш аспект и целевой объект должен быть Spring @Component.

Смежные вопросы