当前位置: 首页 > 知识库问答 >
问题:

@inject不适合spring 5 jersey 2.29.1,但@autowire适合

欧阳嘉
2023-03-14

我有一个使用JSF Spring5Jersey2.29.1(spring-jersey5)运行在Payara 5.1.3上的web应用程序。
DI部分由Spring处理,它使用@inject。

我的问题是,由于我已经从jerseyendpoint上的jersey2.25 Spring-Jersey4和Payara 4.1.9.2迁移过来,我不能为spring beans使用@inject,我必须使用@autowired。
我收到的错误是:

    Severe: Exception while loading the app : html" target="_blank">java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type MyService with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private my.company.rest.internal.workflowengine.LeaveFlowEndpoint.myService

我想这与正在执行注入(HK2)的库有关,当使用@inject时,它试图解决依赖关系本身,而不是在Spring中查找依赖关系。
如果相反,我使用@autowired就像一个魅力。

知道为什么我会得到这个吗?

PS hk2版本为2.29.1

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>         
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>my.company.endpoints.rest</param-value>   
    </init-param>       
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>
 <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>         

共有1个答案

叶恩
2023-03-14

在我的案例中,问题与以下事实有关:当部署到Payara时,隐式cdi标志没有禁用。它一停用就没事了。

 类似资料:
  • 我已经通过->->创建了新项目 我的第一个问题是:为什么@inject注释显示错误?即使添加了。

  • 问题内容: 我正在尝试使用scikit-learn / pandas构建情感分析器。建立和评估模型是可行的,但尝试对新的示例文本进行分类则无法。 我的代码: 错误: 我不确定是什么问题。在我的分类方法中,我创建了一个全新的矢量化器来处理要分类的文本,与用于从模型创建训练和测试数据的矢量化器分开。 谢谢 问题答案: 您已经安装了矢量化器,但由于它在函数的生命周期内不存在,因此将其丢弃。相反,将模型转

  • 我的bean验证有问题。我将Quarkus与MongoDB一起使用,当我试图运行create REST API,在请求bean之前使用注释时,如果我想创建一个带有字段的文档(显然我在entity中使用了),但创建的文档没有字段,我希望出现异常。下面是我的代码: car.java: carResource.java: 我对注释也有同样问题,因为我可以创建一个包含多于3个字符的字段。 更新

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 我有一个红色像素图像,我想在红色像素处显示另一个图像,所以我编写了以下代码: 我的代码太大了,所以我在这里写了什么是重要的。不管怎样,当我运行它时,我得到这个错误: 回溯(最近一次调用):文件“C:\Users\AndréLuiz\Desktop\equality\equality.py”,第171行,在screen.blit(w_plat,w_pos)类型错误:blit的目标位置无效 检查后,打