Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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应用程序可配置规则_Java_Architecture_Configuration_Batch Processing - Fatal编程技术网

需要批量加载Java应用程序可配置规则

需要批量加载Java应用程序可配置规则,java,architecture,configuration,batch-processing,Java,Architecture,Configuration,Batch Processing,我正在用Java开发一个应用程序。我必须将平面文本文件中的数据上传到DB表中。问题是,由于该应用程序由几个具有不同系统的供应商使用,这些供应商可以生成不同的平面文本文件。 例如,供应商V1可以生成一个文本文件,其中某些字段从第10列开始,而另一个供应商V2可以生成一个文本文件,其中相同的字段可以从第12列开始。 所以在某种程度上,我对不同的供应商有不同的解析规则 我想要实现的是创建一个应用程序,从某个特定位置(可能是某个可配置文件)加载“规则”。这些规则将应用于平面文本文件以生成数据 之后,在将

我正在用Java开发一个应用程序。我必须将平面文本文件中的数据上传到DB表中。问题是,由于该应用程序由几个具有不同系统的供应商使用,这些供应商可以生成不同的平面文本文件。 例如,供应商V1可以生成一个文本文件,其中某些字段从第10列开始,而另一个供应商V2可以生成一个文本文件,其中相同的字段可以从第12列开始。 所以在某种程度上,我对不同的供应商有不同的解析规则

我想要实现的是创建一个应用程序,从某个特定位置(可能是某个可配置文件)加载“规则”。这些规则将应用于平面文本文件以生成数据

之后,在将数据保存到DB之前,将对该数据应用一些转换。 这些转换也将是特定于供应商的。例如,供应商V1可以在将某个字段发送到DB之前将其除以10,而供应商V2可以在保存之前将同一字段除以20

我怎样才能做到这一点?你推荐的最佳实践是什么

我在想是否可以为此创建一个MDB

使用JPA将数据保存在DB中(不确定这是否是gud的想法,因为可能有50-60k条记录) 不确定应该使用什么来配置解析和转换规则


如有任何建议,将不胜感激

我建议您学习如何使用Java反射。你可以在我写的免费培训课程中找到这方面的介绍。您的应用程序可以使用反射加载插件:并且您可以为每个供应商的文件格式编写单独的插件。应用程序可以使用配置文件中的条目来指定实现要加载的插件的Java类的名称

您说过,工作流程基本上是:(1)解析输入文件以获取数据;(2) 数据转换;(3) 将转换后的数据写入数据库。如果步骤2与步骤1紧密耦合,那么我建议每个插件都应该实现步骤1和步骤2。但是如果步骤2独立于步骤1,那么应用程序应该加载两个插件:一个用于步骤1,另一个用于步骤2

如果您决定需要将转换后的数据加载到不同的后端(数据库、写入文本文件、发送电子邮件等),那么步骤3也可以通过插件体系结构实现