2016-08-09 2 views
0

У меня есть @Component -номененный класс, который имеет несколько авто-проводных зависимостей. Я не хочу автоматически сканировать этот пакет, поскольку у него много других классов, которые я не хочу инициализировать.Spring define bean to auto-scan

Я могу добавить их в @Configuration как @Bean, однако я не хочу терять способность иметь вещи с автоматической проводкой, и я фактически не изменяю конфигурацию во всех местах, где они настроены. Другими словами, я не хочу перечислять все зависимости для указанного компонента вручную.

Я знаю, что могу использовать фильтры для сканирования компонентов, но они громоздки, если в разных пакетах есть много классов, которые должны быть выбраны описанным выше способом.

Есть ли способ рассказать весне о добавлении и автоматической проводке определенного класса?

ответ

1

Как вы можете видеть из JavaDoc, аннотация @ComponentScan имеет несколько способов регистрации компонентов. Если вы не хотите использовать фильтры, возможно, проще всего было бы выборочно добавлять классы и подпакеты для сканирования, а не на верхний уровень вашего приложения. Например:

@Configuration 
@ComponentScan(
    basePackages = { "me.myorg.myapp.services", "me.myorg.myapp.web" }, 
    basePackageClasses = { me.myorg.myapp.config.MyDbConfig.class }) 
public class MyAppConfig { ... } 

Следует также отметить, что вы можете создать множество публичных статических конфигурационных подклассов. Они будут игнорироваться при сканировании компонентов, но могут быть импортированы как обычные в другие классы конфигурации. Это может быть полезно в приведенном выше сценарии, если вы хотите просто сканировать каждый пакет, но затем выборочно сканировать или импортировать подклассы:

public class BaseConfig { 

    @Configuration 
    public static class DbConfigA {...} 

    @Configuration 
    public static class DbConfigB {...} 

} 

@Configuration 
@ComponentScan(
    basePackages = { "me.myorg.myapp" }, 
    basePackageClasses = { DbConfigA.class }) 
public class MyAppConfig { ... } 
+0

Спасибо за два решения, я думаю, что это будет работать отлично подходит для того, что мне нужно. –

 Смежные вопросы

  • Нет связанных вопросов^_^