Java 在Quarkus-Camel中,在调用任何其他类之前调用一个类

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

我正在开发Quarkus应用程序,在其中我使用ApacheCamel,并以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


我使用了@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
    }
}