我是春天的新手,我现在有点迷茫。 在这个 SpringBoot 应用程序中,我得到了 3 个类,所有 3 个类都继承自一个顶级抽象类。 这三个类@Component注释,并且位于同一包中。
AbstractClass
|
|-- @Component ClassA extends abstractClass
|-- @Component ClassB extends abstractClass
|-- @Component ClassC extends abstractClass
每个类启动一些线程来执行一些后台工作。 所以基本上 AbstractClass 处理线程启动逻辑,而每个类都有自己的 ExecutorService 和许多线程,并将实现将提交给 ExecutorService 的可运行对象的行为。
这是我的弹簧配置:
@SpringBootApplication
@ComponentScan(basePackages = {"com.myapp.test"})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
我所有的类都在包com.myapp.test.listeners中。
有趣的是:A类启动并完美运行。 ClassB 和 ClassC 不会启动,甚至不会出现在日志中。
我已经为此浪费了 3 个小时...如果你们中的一个人有想法... 谢谢!
所以我解决了我的问题,我不知道到底是什么导致了这个问题......但我知道是什么解决了它:我的一个类暂时不使用,所以我用Excutors.newFixedThreadPool(0)
来创建它的 ExecutorService 成员......这会触发异常(日志中未显示(。 奇怪的是,它保留了另一个要扫描和创建的组件......但现在它起作用了。