Применяете советы по классу Spring? - PullRequest
0 голосов
/ 29 апреля 2018

Я могу применить приведенный ниже аспект для класса Employee, но не для встроенного класса Spring DelegatingMessageSource. Вот определение аспекта

    @Aspect
    @Component
    public class LogCustomAspect {

         //It does not work
         @Before("execution(* org.springframework.context.support.DelegatingMessageSource.getMessage(..))")
        public void logResponse1(JoinPoint jp) {
             System.out.println("Inside logResponse1");
         }

         // It works
         @Before("execution(* com.myproject.Employee.getEmployee(..))")
        public void logResponse2(JoinPoint jp) {
             System.out.println("logResponse2");
         }
    }

Я не уверен, что мне здесь не хватает и как применять класс «Asspect Spring»?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Поскольку DelegatingMessageSource не является компонентом, управляемым пружиной, к нему не будут применяться аспекты. Вот код для вашей справки DelegatingMessageSource .

То, что я хотел бы предложить, это попытаться определить бин DelegatingMessageSource в одном из ваших @Configuration классов. Может быть, это сработает:

@Bean
public HierarchicalMessageSource messageSource() {
    return new DelegatingMessageSource();
}
0 голосов
/ 30 апреля 2018

Обычно, когда Spring AOP не может быть применен к классу, причина в том, что класс не является компонентом / компонентом Spring. Может быть, это относится к DelegatingMessageSource, поскольку я не пользователь Spring, я не проверял. Если это не причина (некоторые эксперты по Spring могут вам сказать), возможно, у вас проблема с конфигурацией.

Но если мое предположение верно, единственный способ добавить аспект в этот класс - настроить Spring на использование полного AspectJ через LTW (ткачество во время загрузки) . AspectJ не полагается на динамические прокси, но напрямую вплетает в байт-код исходного класса.

...