这两个是服务类,它对其他服务进行http调用以检索json响应。我只是想知道这是不是一个正确的使用资源转换器的方法,它可以帮助将json响应字符串转换为POJO。
B您是否注意到,这两个单独的类包含自己的ResourceConverter
Bean方法。我不能创建一个可以由所有类共享的方法,因为我们需要DummyResponse.class
和TestResponse.class
作为参数。那么,这种方式可以接受吗?有多个Bean方法返回相同的类型,但在不同的类中,这是一种良好的实践吗?
@Service
public class TestClient(){
@Bean
private ResourceConverter getTestResponseConverter(){
ObjectMapper mapper = new ObjectMapper();
mapper.setDeserialization(DeserializationFeature.ALLOW_UNKNOWN_PROPERTIES);
ResourceConverter converter = new ResourceConverter(mapper,TestResponse.class);
return converter;
}
private TestResponse getTestResponse(){
//okhttp call to get the json, this is not actual syntax for call, not relevant in this context
String responseBodyString = okhttp.call(request);
JSONAPIDocument<TestResponse> testDocument = getTestResponseConverter().readDocument(responseBodyString, TestResponse.class);
return testDocument.get();
}
}
@Service
public class DummyClient(){
@Bean
private ResourceConverter getDummyResponseConverter(){
ObjectMapper mapper = new ObjectMapper();
mapper.setDeserialization(DeserializationFeature.ALLOW_UNKNOWN_PROPERTIES);
ResourceConverter converter = new ResourceConverter(mapper,DummyResponse.class);
return converter;
}
private Dummy getDummyResponse(){
//okhttp call to get the json, this is not actual syntax for call, not relevant in this context
String responseBodyString = okhttp.call(request);
JSONAPIDocument<DummyResponse> dummyDocument = getDummyResponseConverter().readDocument(responseBodyString, DummyResponse.class);
return testDocument.get();
}
}
1条答案
按热度按时间6ioyuze21#
您应该/可以使用
@Primary
来注解在存在@Autowired ResourceConverter...
而Spring无法区分时优先的那个。您可以使用
@Qualifier
来“命名”每个组件,然后在@Autowire
d Bean上使用相同的注解来获得您想要的组件。所以:
和
您可以执行以下操作:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Qualifier.html