Java 导入其他Spring引导应用程序而不使用其bean

Java 导入其他Spring引导应用程序而不使用其bean,java,spring,spring-boot,Java,Spring,Spring Boot,我想使用另一个spring boot应用程序中的一些类。如何在不加载应用程序中的所有bean的情况下导入它们。@ComponentScan注释负责自动加载标有@Component或其派生注释的任何类。此注释具有各种选项来过滤加载的bean 如果导入的应用程序的父包与主应用程序的父包不同,只需将basePackages选项设置为特定的父包 例如,假设您的主应用程序有com.example.main包,而导入的应用程序有com.example.imported包,您可以放入: @ComponentS

我想使用另一个spring boot应用程序中的一些类。如何在不加载应用程序中的所有bean的情况下导入它们。

@ComponentScan注释负责自动加载标有@Component或其派生注释的任何类。此注释具有各种选项来过滤加载的bean

如果导入的应用程序的父包与主应用程序的父包不同,只需将basePackages选项设置为特定的父包

例如,假设您的主应用程序有com.example.main包,而导入的应用程序有com.example.imported包,您可以放入:

@ComponentScanbasePackages={com.example.main} 这将只导入在主应用程序包下定义的bean

如果这还不够,还可以对同一注释使用excludeFilters选项

@组件排除过滤器={ @ComponentScan.Filtertype=Filtertype.ASSIGNABLE\u类型,值=Imported.class }
您还可以将这两个选项组合起来进行更具体的筛选

@metacube答案可能就足够了。但另一个非常简单的方法是使用@ComponentScanbasePackageClasses={BeansToExport.class,MoreBeansToExport.class,…}-示例:

@Configuration
public class BeansToExport {

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

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

}
我称之为包容性战略,而@metacube的例子则是排他性战略。两者都有各自的用途