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个模块:
使用这种方法,您不必为应用程序主类中的特定类使用复杂的include/exclude逻辑 您可以使用任何对您的案例有意义的名称来处理概要文件
@SpringBootApplication
@Profile("!test")
public Class1 {}
@SpringBootApplication
@Profile("test")
public Class2 {}
你到底想达到什么目的?为什么这两个类需要在同一个包中呢?SpringBootApplication是一个元注释,它可以进行组件扫描和包括组件扫描在内的许多其他工作。详细说明为什么您的项目有两个主要的应用程序类可能会得到更好、更易于维护的答案,例如,它是条件配置吗?加载了不同的bean等等?我添加了一些解释是的,我确信这是最好的方法。我会尝试这样做,但我仍然想知道是否有办法做到这一点,因为我无法控制是否可以在模块中重构它?谢谢
@SpringBootApplication
@Profile("!test")
public Class1 {}
@SpringBootApplication
@Profile("test")
public Class2 {}