Подтвердить что ты не робот

Какой синтаксис для включения подпакетов в <context: component-scan>?

Я использую Spring, и у меня есть длинный список подпакетов, нужно ли их указывать по одному в теге <context:component-scan>?

<context:component-scan base-package="com.fooapp.mainpackage, 
com.fooapp.mainpackage.subpackage1, 
com.fooapp.mainpackage.subpackage2, 
com.fooapp.mainpackage.subpackage3" />
4b9b3361

Ответ 1

Компонент-сканирование поддерживает иерархии пакетов, поэтому это должно работать:

<context:component-scan base-package="com.fooapp.mainpackage"/>

Это легко и быстро проверить для себя - вы попробовали?

Ответ 2

Кроме того, я бы добавил, что по умолчанию классы, аннотированные с помощью @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.