Импортировать другое приложение Spring Boot без бобов - PullRequest
0 голосов
/ 08 июля 2019

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

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Аннотация @ComponentScan отвечает за автоматическую загрузку любых классов, отмеченных @Component, или производных аннотаций.Эта аннотация имеет различные параметры для фильтрации загружаемых bean-компонентов.

Если родительский пакет импортируемого приложения отличается от основного приложения, вы можете просто установить параметр basePackages для определенного родительского пакета.

Например, скажем, что ваше основное приложение имеет пакет com.example.main, а импортированное приложение имеет com.example.imported, вы можете ввести:

@ComponentScan(basePackages = {"com.example.main"})

Это будет импортировать только bean-компоненты, определенные впакет основного приложения.

Если этого недостаточно, вы также можете использовать опцию excludeFilters в той же аннотации.

@ComponentScan(excludeFilters={
  @ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Imported.class)
})

Вы также можете комбинировать оба варианта для более специфической фильтрации,

0 голосов
/ 09 июля 2019

@ metacubed ответ, вероятно, достаточно. Но другой очень простой подход - использовать @ComponentScan(basePackageClasses = {BeansToExport.class, MoreBeansToExport.class, ...}) - Пример:

@Configuration
public class BeansToExport {

   @Bean
   public ServiceClass serviceClassBean(){
      return new ServiceClass();
   }

   @Bean
   public RespositoryClass repositoryClassBean(){
      return new RepositoryClass();
   }

}

Я бы назвал это всеобъемлющей стратегией, тогда как пример @ metacube - исключительной стратегией. Оба имеют свое применение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...