簡體   English   中英

服務中的Spring + Apache CXF @Autowire始終為null

[英]Spring + Apache CXF @Autowire in the service always null

我已經使用Apache CXF創建了soap服務,我已經創建了@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;
    }
}

無論如何,我可以提供服務。

發生這種情況是因為您正在端點bean中創建GeneratingLoginToken的新實例:

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

這意味着Spring不了解您的新實例,因為它本身不是Spring bean。 相反,您應該自動連接GenerateLoginToken並使用此類的Spring bean實例,該實例應正確連接所有bean,因此AuthService不應為null:

@Autowire
GenerateLoginToken generateLoginToken;

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



    endpoint.publish("/Token");

    return endpoint;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM