【问题标题】:Spring + Apache CXF @Autowire in the service always null服务中的 Spring + Apache CXF @Autowire 始终为空
【发布时间】:2017-09-11 13:59:53
【问题描述】:

我使用 Apache CXF 创建了肥皂服务,我创建了一个 @WebService。在该服务中,我需要注入@Service。当我 @Autowire 该服务时,该实例仍然为空。

端点已初始化

@Bean
    public Endpoint endpointToken() {
        EndpointImpl endpoint = new EndpointImpl(bus, new GenerateLoginToken());



        endpoint.publish("/Token");

        return endpoint;
    }

服务类

@WebService(serviceName = "GenerateToken", portName = "TokenPort",
    targetNamespace = "http://service.ws.samp",
    endpointInterface = "com.web.sigel.ws.soap.webServices.GenerateToken")
@Service("AuthService")
public class GenerateLoginToken implements  GenerateToken {

    @Autowired
    private  AuthService authService; //this remains Null whenever i make a call. 



    @Override
    @RequestWrapper(localName = "loginRequest", targetNamespace = "http://service.ws.samp", className = "com.web.sigel.ws.soap.security.LoginRequest")
    public LoginResponse generateToken(LoginRequest loginRequest) {
        LoginResponse loginResponse = new LoginResponse();
         String token  = authService.createAuthToken(loginRequest);

         loginResponse.setToken(token);

        return loginResponse;
    }
}

无论如何,我可以注入我的服务。

【问题讨论】:

  • 你能展示你的 AuthService 类吗?
  • //@Component public class AuthService { //// @Autowired private AuthenticationManager authenticationManager; //@Autowired private UserDetailsS​​ervice userDetailsS​​ervice; //@Autowired private TokenService generateToken; }

标签: java spring soap cxf


【解决方案1】:

这是因为您正在 Endpoint bean 中创建一个新的 GeneratingLoginToken 实例:

EndpointImpl endpoint = new EndpointImpl(bus, new GenerateLoginToken());

这意味着 Spring 不知道您的新实例,因为它本身不是 Spring bean。相反,您应该自动装配 GenerateLoginToken 并使用此类的 Spring bean 实例,该实例应该将所有 bean 正确连接到它,因此 AuthService 不应为空:

@Autowire
GenerateLoginToken generateLoginToken;

@Bean
public Endpoint endpointToken() {
    EndpointImpl endpoint = new EndpointImpl(bus, generateLoginToken);



    endpoint.publish("/Token");

    return endpoint;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-16
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多