Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排除@SpringBootApplication_Java_Spring Boot - Fatal编程技术网

Java 排除@SpringBootApplication

Java 排除@SpringBootApplication,java,spring-boot,Java,Spring Boot,我在我的项目中有两个电源 @SpringBootApplication @ComponentScan(value = com.somepackage, excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = Class2.class)}) public Class1 及 它们都在同一个包中,但需要扫描其他一些包 当我在IDEClass

我在我的项目中有两个电源

    @SpringBootApplication
    @ComponentScan(value = com.somepackage,
            excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = Class2.class)})
    public Class1

它们都在同一个包中,但需要扫描其他一些包

当我在IDEClass1中运行时,我不希望加载Class2,当我运行Class2时,我不希望加载Class1

执行这些排除不起作用,并且执行
@springbootplication(exclude=Class2.class)
显示此错误:无法排除以下类,因为它们不是自动配置类

如何排除其他SpringBootApplication类

编辑:
我们使用2个主要类,因为我们希望有一些工具(小脚本)和重用部分代码。示例:我有应用程序的main类,但我想用另一个main运行它的某些部分以进行一些清理,但很少,我不想仅仅为了这个目的而设置很多lib。我知道它不干净,但我想快速编写一些main,以便在加载所有其他bean的情况下调用我的应用程序,而不是第一个main,因为它启动了许多我不需要的其他线程。

我认为您必须将应用程序结构更改为最少3个模块:

  • 核心代码和资源(共享逻辑)
  • 应用程序1代码和资源(使用核心模块)
  • 应用程序2代码和资源(使用核心模块)
  • 这使事情变得更容易、更清楚。在应用程序模块中,您可以实现接口或从核心扩展基本/默认配置


    使用这种方法,您不必为应用程序主类中的特定类使用复杂的include/exclude逻辑

    您可以使用任何对您的案例有意义的名称来处理概要文件

    @SpringBootApplication
    @Profile("!test")
    public Class1 {}
    
    @SpringBootApplication
    @Profile("test")
    public Class2 {}
    

    你到底想达到什么目的?为什么这两个类需要在同一个包中呢?SpringBootApplication是一个元注释,它可以进行组件扫描和包括组件扫描在内的许多其他工作。详细说明为什么您的项目有两个主要的应用程序类可能会得到更好、更易于维护的答案,例如,它是条件配置吗?加载了不同的bean等等?我添加了一些解释是的,我确信这是最好的方法。我会尝试这样做,但我仍然想知道是否有办法做到这一点,因为我无法控制是否可以在模块中重构它?谢谢
    @SpringBootApplication
    @Profile("!test")
    public Class1 {}
    
    @SpringBootApplication
    @Profile("test")
    public Class2 {}