Spring AOP - исключить конкретные аспекты? - PullRequest
1 голос
/ 09 декабря 2010

Я использую Spring 3.0.5, и мне было интересно, возможно ли как-то исключить классы аспектов из загрузки, которые были аннотированы стереотипом @Aspect, но в то же время включить другие классы, аннотированные аспектами? Кажется, это все или ничего, если вы идете по маршруту аннотации (которым я являюсь). Я пытался взглянуть на и, но не могу найти что-то, что намекает на это.

Причина этого в том, что у меня есть центральная базовая библиотека, которая содержит аспекты, но я, возможно, не захочу включать эти аспекты в каждый проект, который я создаю с использованием этой центральной библиотеки.

Спасибо.

1 Ответ

1 голос
/ 06 декабря 2011

Это долгое время для ответа ...

Если вы используете аннотации AspectJ с Spring AOP, а не AspectJ во время выполнения или во время компиляции, то вам повезло.Spring будет забирать аннотированные классы @Aspect только в том случае, если они также помечены чем-то вроде @Component.Spring не считает @Aspect кандидатом на компонентное сканирование.Если вы используете конфигурацию XML, просто удалите этот bean-компонент из вашей конфигурации.

Я бы предложил НЕ использовать компонентное сканирование, которое затронет основную библиотеку.Например, если ваше приложение - com.example.myapp1, а основная библиотека - com.example.corelibrary. * Убедитесь, что при сканировании компонента используется ТОЛЬКО com.example.myapp1, а не com.example.

По этой причине не безопасно сканировать компоненты вне базового пакета вашего приложения.Изучите отдельные аспекты с помощью XML-конфигурации для bean-компонента.

...