Ответ 1
Компонент-сканирование поддерживает иерархии пакетов, поэтому это должно работать:
<context:component-scan base-package="com.fooapp.mainpackage"/>
Это легко и быстро проверить для себя - вы попробовали?
Я использую Spring, и у меня есть длинный список подпакетов, нужно ли их указывать по одному в теге <context:component-scan>
?
<context:component-scan base-package="com.fooapp.mainpackage,
com.fooapp.mainpackage.subpackage1,
com.fooapp.mainpackage.subpackage2,
com.fooapp.mainpackage.subpackage3" />
Компонент-сканирование поддерживает иерархии пакетов, поэтому это должно работать:
<context:component-scan base-package="com.fooapp.mainpackage"/>
Это легко и быстро проверить для себя - вы попробовали?
Кроме того, я бы добавил, что по умолчанию классы, аннотированные с помощью @Component
, @Repository
, @Service
, @Controller
, или пользовательская аннотация, которая сама аннотируется с помощью @Component, являются единственными обнаруженными компонентами-кандидатами.
Вы можете изменить это поведение, применив специальные фильтры, которые include-filter
или exclude-filter
Например:
<context:component-scan base-package="com.vanilla">
<context:exclude-filter
type="annotation"
expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
Он исключит все аннотации @Repository.