Quarkus实战:专为Kubernetes而优化的Java解决方案
上QQ阅读APP看书,第一时间看更新

5.7 创建工厂类

问题

如何为一个对象创建一个工厂类?

解决方案

使用CDI中的javax.enterise.inject.Produces概念。

CDI有一个叫作producer的概念,它允许你创建任何类型的对象,需要在可解析的实例列表中添加一个新的bean或类,如下所示:

讨论

Quarkus通过添加@io.quarkus.arc.DefaultBean注解将producer的概念又扩展了一步。对CDI来说,这就像一个已启用的默认替代方案,因为Quarkus不允许使用其他替代方案,所以使用DefaultBean注解的类为你提供了一种创建bean默认实例的方法。下面是从Quarkus网站上截取的代码示例:

下面的代码片段允许你的应用程序或库在任何需要的地方注入一个tracer。你也可以通过创建一个新的producer来定制它:

在你的应用程序中使用这段代码后,从CustomTracerConfiguration创建的Reporter就会在你的应用程序中被使用,而不会使用默认的。

另见

要了解更多信息,请访问以下网页。

·JBoss:JSR 365:Contexts and Dependency Injection for Java 2.0(https://oreil.ly/4-OrV