当前位置: 首页 > 面试题库 >

Jersey2 +spring:@Autowired为空

薄瑞
2023-03-14
问题内容

但是当应用程序尝试在客户端请求之后调用它时,自动装配的Bean为空。在applicationContext.xml中,我只有 组件扫描 设置。

In pom.xml: 
<spring.version>4.1.0.RELEASE</spring.version>
<jersey.version>2.12</jersey.version>

@Component
@RequestScoped
@Path("/user")
public class UserREST {
    @Autowired
    private UserFacade userFacade;

    @POST
    @Path("/auth")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces({MediaType.APPLICATION_JSON})
    public AuthResponse authorize(User user){
        return userFacade.authorize(user);  // Null is caught here
    }
}

--

@Component
public class UserFacade {

    public AuthResponse authorize(com.pushock.model.User user){
        AuthResponse response = new AuthResponse();
        response.setAuthorized(true);
        return response;
    }
}

我究竟做错了什么?

UPD: 这是我的pom.xml https://bitbucket.org/spukhov/memo-
ws/src/00724e00e3aa786f62fd0e43fe0606de6ae569df/pom.xml?at=master


问题答案:

无法将Spring托管的bean直接注入到JAX-RS类中,您需要使用Jersey扩展将其与Spring集成。

有一个Maven依赖关系,您没有 pom.xml

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>2.12</version>
</dependency>

请参阅Jersey文档:第22章。Spring
DI,
并且在页面底部,有一个示例到Spring集成 Github项目的链接。

我在您的项目中看到的另一个问题是您没有显示应如何加载和配置spring上下文。您需要在web.xml中进行配置

   <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>


 类似资料:
  • 我有一个带有JSF2 end Spring4.3的webmodule。在backing bean中,我使用对jar的服务进行DI。在EAR模块中有WAR、带有Spring的JAR和带有Spring配置文件的JAR。 下面是片段: : 当我在Backing Bean中使用时,值为(没有任何异常)。我的JSF bean 你能帮帮我吗,拜托。

  • 问题内容: 我有一个具有字段()的Spring 类(),但是该字段是我尝试使用它时所用的。日志显示该bean和该bean都在创建,但是每当我尝试在服务bean上调用该方法时,都会得到一个a 。Spring为什么不自动接线该领域? 控制器类: 服务等级: 应该自动连接的服务bean,但不是: 当我尝试时,出现以下异常: 问题答案: 本文向大家介绍为什么我的Spring @Autowired字段为空?

  • 问题内容: 我的应用无法自动装配entityManagerFactory。 我的 applicationContext.xml : 我的 java课 : 题: 为什么entityManagerFactory为空? 问题答案: 为了让spring使用注释进行自动扭曲,您必须告诉spring。在您的xml配置中(假设您还没有element)添加一个。这将指示Spring应用程序上下文来扫描注解(如,,

  • 问题内容: 是否通过@Autowired自动检测到?使用@Qualifier时是否按名称进行依赖项注入?我们如何使用这些批注进行setter和构造函数注入? 问题答案: 你可以与一起使用。实际上,如果发现模棱两可的bean类型,spring会询问你是否明确选择了bean,在这种情况下,你应该提供限定符 例如在以下情况下,有必要提供一个限定词 编辑: 在Lombok 1.18.4中,最终可以避免使用

  • 问题内容: 在Spring会连接的类中使用 @Autowired的 优缺点是什么? 只是为了澄清,我是在专门谈论 @Autowired 注释,而不是XML的自动 装配 。 我可能只是不了解它,但是对我来说,这几乎就像是一种反模式- 您的类开始意识到它们与DI框架相关联,而不仅仅是POJO。也许我是惩罚的嘴,但我喜欢为bean设置外部XML配置,并且我喜欢使用显式的接线,因此我确切知道在哪里接线。

  • 当我尝试使用@Autowired注入服务类时,我遇到了一些问题 我的Rest控制器: 我的服务: 界面: 抽象4眼服务: 我的堆栈跟踪: 我试图注入定居点服务,但它抛出java.lang.非法参数例外:无法设置项目.test.rms.服务.定居点类型服务字段项目.test.rms.controller.SettlementTypeController.service到 com.sun.proxy.