Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring boot中使用哪种设计模式来迭代请求属性_Java_Spring_Spring Boot_Java 8 - Fatal编程技术网

Java 在spring boot中使用哪种设计模式来迭代请求属性

Java 在spring boot中使用哪种设计模式来迭代请求属性,java,spring,spring-boot,java-8,Java,Spring,Spring Boot,Java 8,我需要将请求实体保存到多个数据源中。我的请求可以有一个或多个请求对象,它们应该保存在各自的数据库中。哪些设计模式适合需求 HTTP请求 { "params" : [ { "id": "AB", "data": //some object }, { "id": "CD", "data": //some object }, { "id": "EF", "data": //

我需要将请求实体保存到多个数据源中。我的请求可以有一个或多个请求对象,它们应该保存在各自的数据库中。哪些设计模式适合需求

HTTP请求

{
  "params" : [ 
    {
       "id": "AB",
       "data": //some object
    },
    {
       "id": "CD",
       "data": //some object
    },
    {
       "id": "EF",
       "data": //some object
    },
    {
       "id": "GH",
       "data": //some object
    },
    {
       "id": "IJ",
       "data": //some object
    },
    ...........
    ...........
  ]
}
AB&CD-到ORACLE实例1
EF&GH-到ORACLE实例2
IJ-to-MYSQL


这里我知道哪个对象应该保存在哪个数据库中。我不想遍历
params
数组并创建多个小数组,除非这是唯一的选项。我想在这里应用一种设计模式,这种模式可以满足目的,有人能提出建议吗?

我认为在这种情况下,最好的设计模式是[Factory method pattern][1]。实际上,您将通过客户端数据创建适当的对象。我的意思是,根据id值,相关服务将调用以将数据保存到相应的数据库中

for(MyParam param: params){
  serviceHolder.getByType(param.getId()).save(param.getData()); 
}
假设您将有一个使用不同实现保存数据的接口

public interface IService {

   void save(Data data);

   List<String> types();
}
通过使用getByType方法,您可以为每个数据条目找到合适的服务,并调用save方法插入数据库。
[1] :

在这种情况下,我认为最好的设计模式是[Factory method模式][1]。实际上,您将通过客户端数据创建适当的对象。我的意思是,根据id值,相关服务将调用以将数据保存到相应的数据库中

for(MyParam param: params){
  serviceHolder.getByType(param.getId()).save(param.getData()); 
}
假设您将有一个使用不同实现保存数据的接口

public interface IService {

   void save(Data data);

   List<String> types();
}
通过使用getByType方法,您可以为每个数据条目找到合适的服务,并调用save方法插入数据库。 [1] :

for(MyParam param: params){
  serviceHolder.getByType(param.getId()).save(param.getData()); 
}