【发布时间】:2020-01-17 02:21:04
【问题描述】:
我是 Spring 的新手,我现在有点迷茫。 在这个 SpringBoot 应用程序中,我有 3 个类,所有 3 个类都继承自一个顶级抽象类。 这三个类被注解为@Component,并且在同一个包中。
AbstractClass
|
|-- @Component ClassA extends abstractClass
|-- @Component ClassB extends abstractClass
|-- @Component ClassC extends abstractClass
每个类启动一些线程来做一些后台工作。 所以基本上 AbstractClass 处理线程启动逻辑,而每个 Class 都有自己的 ExecutorService 和多个线程,并将实现将提交给 ExecutorService 的可运行对象的行为。
这是我的 Spring 配置:
@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 包中。
有趣的是:ClassA 启动并完美运行。 ClassB 和 ClassC 没有启动,甚至没有出现在日志中。
我已经为此浪费了 3 个小时...如果你们中的一个人有想法... 谢谢!
【问题讨论】:
-
你可以试试
@ComponentScan({ "package-name" })注解,把package-name换成你自己的这三个类的包名。 -
他们如何开始?当 bean 准备好时,您是否有 @PostContruct 或某种方式来执行代码?还是先在某个地方自动装配它,然后调用一个方法?
-
请添加您的 Spring 配置
-
如果您为 bean 使用 xml 配置,您可以将以下内容添加到您的 dispatcher-servlet.xml
-
您好,非常感谢您的留言。我的配置是一个空的
@SpringBootApplication。我在哪里设置@ComponentScan(basePackages = {"com.myapp.test"})。我所有的课程都在一个名为“com.myapp.test.listeners”的包中。谢谢,
标签: java spring spring-boot dependency-injection java-ee-6