我正在开发 Quarkus 应用程序,其中我使用 Apache Camel 并使用 JAVA DSL 方式。 我想在一次特定的类之后调用 RouteBuilder 类,但 RouteBuilder 不允许这样做。
@Startup
@ApplicationScoped
public class FirstClass {
void onStart(@Observes StartupEvent ev) {
//setting some values which are going to used in RouteBuilder class
}
}
public class Rout extends RouteBuilder {
@Override
public void configure() throws Exception {
// accessing value which is set on FirstClass but gives null pointer
}
}
现在,正如您所见,在应用程序启动时,我需要在 RouteBuilder 之前调用 FirstClass,但每次启动项目时 RouteBuilder 都会首先被调用,如何在启动应用程序时调用 FirstClass First?
我使用过@Startup、@PostConstrust,但没有成功,请帮助我,因为我是新手。
最佳答案
您可以使用 CDI 来实现此目的。例如:
@ApplicationScoped
public class FirstClass {
public FirstClass {
// Initialise data to be retrieved in the RouteBuilder
}
}
@ApplicationScoped
public class Routes extends RouteBuilder {
@Inject
FirstClass firstClass;
@Override
public void configure() throws Exception {
// Do something with FirstClass
}
}
camel-quarkus 文档提供了一些有关如何配置应用程序的示例:
https://camel.apache.org/camel-quarkus/latest/user-guide/bootstrap.html
还值得您熟悉如何使用 CDI 将事物连接在一起:
https://camel.apache.org/camel-quarkus/latest/user-guide/cdi.html
关于java - 在 Quarkus-Camel 中的任何其他类之前调用一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66328505/