如何在SpringBoot中从另一个模块调用class



我有一个Spring Boot多模块gradle项目,我正试图从另一个模块调用类。我有一个HttpDataClient.java类,我想在另一个模块的DataResolver.java类中调用。

HttpDataClient.java

public class HttpDataClient implements DataClient{
private final static Logger LOGGER = LoggerFactory.getLogger(HttpDataClient.class);
private final RestTemplate restTemplate;
private final ObjectMapper objectMapper = new ObjectMapper();
public HttpDataClient(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@Override
public DataResponse getData(String dataId) {
try{
JsonNode node = restTemplate.exchange(
String.format("/data/%s", dataId),
HttpMethod.POST,
new HttpEntity<>(buildRequest(dataId), headers()),
JsonNode.class
).getBody();
return dataResponse(node);
}catch (HttpStatusCodeException e) {
String msg = String.format(
"Error getting data for dataId: %s",
dataId,
e.getStatusCode(),
e.getResponseBodyAsString());
LOGGER.error(msg);
return dataResponse.failed();
}
}
private MultiValueMap<String, String> headers() {
final LinkedMultiValueMap<String, String> mv = new LinkedMultiValueMap<>();
mv.set(HttpHeaders.CONTENT_TYPE, "application/json");
return mv;
}
private DataResponse dataResponse(JsonNode node) {
return DataResponse.dataResponse(
asString(node, "dataId"),
asString(node, "dataAuthor"),
asString(node, "dataAuthorId")
);
}
private JsonNode buildRequest(String dataId) {
ObjectNode root = objectMapper.createObjectNode();
root.put("dataId", dataId);
return root;
}
} 

所以,这个类应该返回一些来自Data service的响应数据。之后,我想获得响应数据,并在其他模块的类做一些事情。

我想这样做:

DataResolver.java

public class DataResolver {
private final HttpDataClient client;
public DataResolver(HttpDataClient client) {
this.client = client;
}
}

但是我的HttpGameDataClient类,我试图使用它是不被DataResolver.java类识别。

我在这里错过了什么?如有任何建议,不胜感激。

确保你需要的模块作为一个依赖于需要它的模块。

请检查是否已将httpdatacclient .class添加到spring配置类中。你正在初始化bean。另外,检查是否添加了正确的依赖项

最新更新