Java 在Quarkus-Camel中,在调用任何其他类之前调用一个类
我正在开发Quarkus应用程序,在其中我使用ApacheCamel,并以JAVA DSL的方式使用它。 我想在特定的类之后调用RouteBuilder类,但RouteBuilder不允许这样做Java 在Quarkus-Camel中,在调用任何其他类之前调用一个类,java,apache-camel,quarkus,Java,Apache Camel,Quarkus,我正在开发Quarkus应用程序,在其中我使用ApacheCamel,并以JAVA DSL的方式使用它。 我想在特定的类之后调用RouteBuilder类,但RouteBuilder不允许这样做 @Startup @ApplicationScoped public class FirstClass { void onStart(@Observes StartupEvent ev) { //setting some values
@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
我使用了@Startup、@PostConstrust,但运气不好,请帮助我,因为我是新手。您可以使用CDI来实现这一点。例如:
@ApplicationScoped
public class FirstClass {
public FirstClass {
// Initialise data to be retrieved in the RouteBuilder
}
}
camel quarkus文档提供了一些有关如何配置应用程序的示例:
您还需要熟悉如何使用CDI将事物连接在一起:
是的,这也是一个很好的方法。我想会有一些注释让类首先加载,比如启动时加载或初始化方法,但无论如何,感谢您的回答,这个cdi链接提供了很好的信息。在我的例子中,我有一个类“RouteTemplates”,它有camel RouteTemplates,我用@Startup和@ApplicationScoped对这个类进行了注释,在另一个类“SenderRoute”中,我使用了
routetemplates
中定义的routetemplates。我甚至在“SenderRoute”中注入了RouteTemplates
,但我仍然得到无法找到id为foobar的RouteTemplate
。首先加载routetemplates需要多次重新启动,我如何才能绝对确保首先加载routetemplates
?
@ApplicationScoped
public class Routes extends RouteBuilder {
@Inject
FirstClass firstClass;
@Override
public void configure() throws Exception {
// Do something with FirstClass
}
}