Также можно переопределить значение для proxyMode , как показано в следующем примере:
Более подробную информацию можно найти на вики-странице Spring Annotation Programming Model.
Автоматическое обнаружение классов и регистрация определений бинов
Spring может автоматически обнаруживать стереотипизированные классы и регистрировать соответствующие экземпляры BeanDefinition в ApplicationContext . Например, следующие два класса могут быть автоматически обнаружены:
В следующей альтернативе используется XML:
Сканирование пакетов classpath требует наличия соответствующих записей каталога в classpath. Если вы собираете JAR с помощью Ant, убедитесь, что не активируете переключатель «только файлы» в задаче JAR. Кроме того, каталоги пути классов могут быть закрыты на основании политик безопасности в некоторых средах – например, автономные приложения на JDK 1.7.0_45 и выше (что требует установки доверяемой библиотеки (‘Trusted-Library’) в ваших манифестах — см. https://stackoverflow.com/questions/19394570/java-jre-7u45-breaks-classloader-getresources).
Как работать с сеткой в Serato DJ? Для чего она вообще нужна? | ERRORRlessons
По пути модулей JDK 9 (Jigsaw) сканирование classpath Spring в целом работает так, как ожидается. Однако убедитесь, что классы ваших компонентов экспортированы в дескрипторы module-info . Если вы ожидаете, что Spring будет вызывать непубличные члены ваших классов, убедитесь, что они ‘открыты’ (то есть, что они используют объявление opens вместо объявления exports в вашем дескрипторе module-info ).
Более того, AutowiredAnnotationBeanPostProcessor и CommonAnnotationBeanPostProcessor неявно включаются при использовании элемента component-scan. Это означает, что два компонента автоматически обнаруживаются и соединяются вместе — и все это без каких-либо конфигурационных метаданных бина, указанных на XML.
Вы можете отключить регистрацию AutowiredAnnotationBeanPostProcessor и CommonAnnotationBeanPostProcessor , включив атрибут annotation-config со значением false .
Использование фильтров для настройки сканирования
annotation (по умолчанию)
Аннотация, которая должна быть present или meta-present на уровне типа в целевых компонентах.
Класс (или интерфейс), на который могут быть назначены (расширены или реализованы) целевые компоненты.
Выражение типа AspectJ, которому должны соответствовать целевые компоненты.
Регулярное выражение для сопоставления с именами классов целевых компонентов.
Кастомная реализация интерфейса org.springframework.core.type.TypeFilter .
В следующем листинге показан эквивалент на XML:
Определение метаданных бинов в компонентах
Начиная с версии Spring Framework 4.3, вы также можете объявить параметр фабричного метода типа InjectionPoint (или его более конкретного подкласса: DependencyDescriptor ) для получения доступа к точке внедрения запроса, которая вызывает создание текущего бина. Обратите внимание, что это касается только фактического создания экземпляров бина, а не внедрения существующих экземпляров. Как следствие, эта функция имеет смысл для бинов, находящихся в области доступности prototype. Для других областей доступности фабричный метод распознает только точку внедрения, которая вызвала создание нового экземпляра бина в данной области доступности (например, зависимость, которая вызвала создание бина-одиночки с отложенной инициализацией). В таких сценариях можно использовать предоставленные метаданные точки внедрения с соблюдением семантической осторожности. В следующем примере показано, как использовать InjectionPoint :
Blender для чего и для кого нужен. Видеоуроки для начинающих. На русском языке.
Именование компонентов с автоматическим обнаружением
Если такая аннотация не содержит value имени или для любого другого обнаруженного компонента (например, обнаруженного кастомными фильтрами), генератор имен бинов по умолчанию возвращает неполное имя класса без заглавных букв. Например, если были обнаружены следующие классы компонентов, то их имена будут myMovieLister и movieFinderImpl :
Источник: javarush.com