Как делает Калитку @SpringBean
работа аннотации? Это использует отражение во время выполнения? Это заставляет компилятор ввести некоторый код? Или что?
Пружина использует класс загрузчика и ASM во время работы для поиска всех аннотированных классов.
Вы можете настроить , где пружина должна искать бобы:
<context:component-scan base-package="some.package.to.start.from"/>
Это использует ClassPathBeanDefinitionScanner, который будет использовать PathMatchingResourcePatternResolver для поиска классов и ASM-based MetadataReader для считывания аннотаций.
.@SpringBean
работает с использованием инжекторного механизма Wicket's , лежащего в основе цикла . Когда Вы инстанцируете компонент Wicket, конструктор класса компонентной базы Wicket вводит инстанцируемый класс, ищет аннотацию @SpringBean
. Если боб найден, то Wicket генерирует прокси для пружинной фасоли и впрыскивает ее в поле компонента. Это эквивалент Wicket's spring's @Autowired
annotation, эффект аналогичен.
Это, однако, не имеет ничего общего с функцией сканирования пружины по контексту/классу (например, @Component
), которая заключается в автоматическом обнаружении того, что является и не является фасолью, а имеет какое-либо отношение к проводке.