spring-aop В контексте Spring для класса типов не найдено ни одного или нескольких bean-компонентов

Я не могу применить аспект к компонентам конечной точки Spring Rest для целей ведения журнала. Все классы конечных точек реализованы как

@Component
@Path("mypath")
public class MyEndpointImpl extends MyEndpoint
{...}

Без аспекта все работает нормально без ошибок. Когда я пытаюсь применить аспект, я просто получаю список ошибок для каждого класса конечной точки, например «Ни один или несколько компонентов не найдены в контексте Spring для класса типа **.* EndpointImpl», и ни один аспект не перехватывает методы конечных точек. Однако все работает нормально, как будто не было сообщения об ошибке и никакого аспекта.

Интересно, когда я создаю, например. простой фильтр

@Component
@WebFilter(filterName = "MySimpleFilter", urlPatterns = "/*")
public class SimpleFilter implements javax.servlet.Filter
{...}

в пакете pointcut метод doFilter класса SimpleFilter перехватывается аспектом, как и следовало ожидать для всех методов конечной точки.

В чем тут может быть проблема, есть идеи?


person mirec    schedule 31.07.2017    source источник
comment
Aspect оборачивает каждый объект в прокси, поэтому кажется, что Spring не может найти проксированные экземпляры MyEndpointImpl. Думаю, это зависит от того, как вы настраиваете аспект, а также от обнаружения компонентов (сканирование пакетов и т. Д.). Нужно больше информации   -  person StanislavL    schedule 31.07.2017
comment
Спасибо за ваш ответ @StanislavL. В любом случае, мне любопытно, почему это не проблема для SimpleFilter?   -  person mirec    schedule 31.07.2017
comment
похоже, это только в случае, если реализация и API остальных конечных точек разделены. Очень странная весна...   -  person mirec    schedule 01.08.2017


Ответы (1)


В моей среде проблема исчезла при добавлении следующего в файл application.yml

spring.aop.proxy-целевой класс: правда

person Michael Dahmen    schedule 21.11.2017
comment
Это должен быть комментарий. Пока вы не наберете достаточно репутации, чтобы публиковать комментарии, пожалуйста, воздержитесь от ответов на вопросы таким образом или проведите дополнительное исследование и опубликуйте более подробные ответы. - person sjaustirni; 21.11.2017