6 java architecture spring dao spring-boot
我有自己的服务调用第三方休息服务,该服务返回基于文本的响应。基于文本的响应不是正确的服务响应,需要解析内容和错误。为便于讨论,假设第 3 方休息服务无法更改。
鉴于这些情况,我想知道我是否应该将该解析连接到应用程序的 dao 层或服务层。我知道服务层应该包含您所有的业务逻辑,但我觉得如果我不进行解析在我的道层我正在泄漏。在这种情况下,为了解析/转换的目的,可以在 dao 中有逻辑还是应该在服务层中完成?
任何建议表示赞赏。
public void MyDao {
private RestTemplate restTemplate;
private ResponseParser responseParser;
public myDao(RestTemplate restTemplate, ResponseParser responsePaser){
this.restTemplate = restTemplate;
this.responseParser = responseParser;
}
public MyResponse sendRequest(MyRequest myRequest){
ResponseEntity<String> responeEntity = restTemplate.exchange(...);
String body = responseEntity.getBody();
return responseParser.parse(body);
}
}
Run Code Online (Sandbox Code Playgroud)
或者
public void MyDao {
private RestTemplate restTemplate;
public myDao(RestTemplate restTemplate, ResponseParser responsePaser){
this.restTemplate = restTemplate;
}
public String sendRequest(MyRequest myRequest){
ResponseEntity<String> responeEntity = restTemplate.exchange(...);
return responseEntity.getBody();
}
}
public void MyService {
private MyDao myDao;
private ResponseParser responseParser;
public myDao(MyDao myDao, ResponseParser responsePaser){
this.myDao = myDao;
this.responseParser = responseParser;
}
public MyObject process(MyRequest myRequest){
String response = myDao.sendRequest(myRequest)
return responseParser.parse(response);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我对设计的看法和看法。
考虑到上述几点,以下是我对现有设计的看法以及我将如何做。
使用数据访问对象(DAO)来抽象和封装对数据源的所有访问。DAO 管理与数据源的连接以获取和存储数据。
它进一步写道:数据源可以是像 RDBMS 这样的持久存储、像 B2B 交换这样的外部服务、像 LDAP 数据库这样的存储库,或者是通过CORBA Internet Inter-ORB 协议 (IIOP) 或低级访问的业务服务。插座。
所以,是的,调用和解析应该发生在 DAO/客户端中。
严格来说,Dao层用于管理持久性机制中包含的信息,例如:数据库、LDAP 等。因此,当您处理外部端点时,“包含”服务中的功能是一种更广泛使用的方法。
回答你的问题,第一个选择是更好的选择。
您将所需的业务逻辑包含到知道外部端点返回的格式/信息的类中。
使用上述类的外部类将管理一个众所周知的对象(而不是原始字符串值)
外部端点中的某些类型的升级(例如,响应格式的更改)可以在 Dao 类中更好地管理,而不会影响使用它的其他类。
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |