[英]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.