【问题标题】:Injection using @Autowired not Working in @Webservice class使用@Autowired 的注入在@Webservice 类中不起作用
【发布时间】:2020-08-04 08:23:31
【问题描述】:

我正在尝试像这样在 Web 服务类中注入服务

package com.mobinets.web.nep.backend.soapControllers;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import com.mobinets.web.nep.backend.data.entity.Router;
import com.mobinets.web.nep.backend.data.entity.Version;
import com.mobinets.web.nep.backend.services.RouterService;
import com.mobinets.web.nep.backend.services.VersionService;

@Service
@WebService
public class RouterSoapService extends SpringBeanAutowiringSupport{

    @Autowired
    private RouterService routerService;

    @Autowired
    private VersionService versionService;

    @WebMethod
    public String getRouter(@WebParam int objectId, @WebParam String versionName) {
    
        Version version = versionService.findByName(versionName);
        Router router = routerService.findByObjectIdAndVersion(objectId, version.getId());
        return router.getName();
        
    } 
}

我从SpringBeanAutowiringSupport扩展类并添加@Service注解,

它在versionServicerouterService 上一直给我null,

我错过了什么吗?

【问题讨论】:

  • 你是如何创建RouterSoapService的?
  • 我写了它,并从中生成了 wsdl
  • RouterSoapService是如何创建的?
  • 我创造它!
  • RouterServiceVersionService 类的外观如何?他们有注释吗?

标签: java spring-boot web-services soap


【解决方案1】:

我能想到的唯一原因是任何一项服务

  • 缺少@Component 原型之一(你说它们都有@Service 所以这应该没问题)或
  • 如果它们依赖于任何其他未自动装配的组件,例如,如果 要么有一个已经用 new 关键字实例化的存储库 它们将被排除在自动装配之外

【讨论】:

  • 我认为 webService 注释有自己的上下文,将它与 Spring Boot 的应用程序上下文分开。也许我需要创建包含这些服务的 bean 的 cxf 文件并将它们放在 webService 类中,你怎么看?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
  • 2023-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2011-10-02
相关资源
最近更新 更多