我有一个简单的Quarkus资源:
@Path("/rosters")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class RosterResource {
private final RosterService rosterService;
public RosterResource(RosterService rosterService){
this.rosterService = rosterService;
}
@GET
@Path("/{rosterId}")
public Response getRoster(@PathParam("rosterId")Long rosterId){
return Response.ok(rosterService.getRosterById(rosterId)).build();
}
}
我试图将RosterService
实例注入到我的资源中,但是我得到了一个javax.enterprise.inject.不满意的解决方案异常
。但是,如果我在RosterService
上使用@Application ationScoped
注释,那么一切都很好。是否有一种方法可以在不使用注释的情况下将RosterService
类注入到我的资源中?换句话说,是否有一种方法可以使Quakus容器可以发现RosterService
而不直接注释该类?
编辑:查看CDI文档,似乎可以使用带有@BuildStep
注释的方法手动注册bean。但是,我不清楚哪个类应该包含带注释的方法)
另一个选择是使用Jandex索引
您不想用@ApplicationScoped
(或任何其他bean discover/scope注释)注释服务类,有什么具体原因吗?
我知道的唯一其他方法(而不是注释)是——正如你自己提到的——使用Jandex索引。
据我所知,Quarkus只实现了所谓的注释bean发现。这意味着Quarkus中的所有CDI bean都必须有一个定义bean的注释@ApplicationScoped
就是其中之一。
编辑:关于Jandex索引,它允许您在其他罐子中扫描bean。换句话说,它只会扩展被扫描的一组类,以获得定义bean的注释。
当涉及@BuildStep
方法时——这仅在Quarkus扩展中可能。扩展功能强大(实际上它们可以定义额外的bean),但也很复杂。你可以从https://quarkus.io/guides/building-my-first-extension,但这可能会让人感到难以承受。如果你想把你的类变成一个bean,你可能会觉得这样做是不对的——这是真的。但是,如果您的类来自无法更改的外部库,那么扩展是有意义的。
问题内容: 我正在使用@cacheable注解缓存函数的结果。我有3个不同的缓存,每个缓存的关键是当前登录的用户的用户ID,该用户ID与方法中的参数连接在一起。在某个事件中,我想逐出所有具有以该特定用户ID开头的键的缓存条目。例如 : 我希望缓存逐出注释为: 但是当我尝试实现这一点时,它给了我一个错误: 什么是实现此目的的正确方法? 问题答案: 每个操作所有Spring Cache批注(即,等)都
问题内容: 如果我要使用DefaultServeMux(我将其指定为ListenAndServe的第二个参数来指定),那么我可以访问,您可以在Go Wiki的以下示例中看到该: 在当前代码中,我无法使用DefaultServeMux,即我将自定义处理程序传递给ListenAndServe 因此,我没有内置的代码。但是,我必须将一些授权代码修改为需要类似的授权代码。例如,如果我一直在使用Defaul
我有一个具有两个属性的dynamoDB表: A: 主分区键 B: 主排序键 我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗? 是否可以将B设为GSI(全局二级索引),如何使用B查询表,因为B已经是排序键。
问题内容: 我有和。 我的Linux Mint 12上有很多错误,我只是重新安装了它,所以我想再次从头开始安装所有内容。 这是我的错误之一。我在那里收到一个有趣的答案: 停止使用su和sudo运行virtualenv。 你需要以普通用户身份运行virtualenv。 你已经使用sudo创建了virtualenv,这就是为什么你会收到这些错误的原因。 那么如何不使用安装呢?我可以使用还是不使用?还是
我将guava jar文件添加到类路径中,但我的IDE(eclipse)说: Nullable无法解析为类型 但如果我ctrl+单击Nullable,我会看到蓝色下划线,然后看到下划线:
我的基于spring Boot2.1的webflux应用程序(来自project reactor)使用了一个库(L),该库公开了一个封装在Resilience4j 1.1.0中的中(它没有使用诸如之类的注释)。 我很想在Spring actuator http管理控制台(例如在health endpoint)中展示这个断路器的指标。我已经添加了依赖项,但是当我加载健康页面时,我只看到以下内容: 即