我有一个如下界面,
public interface MethodExecutor {
<T> List<T> execute(List<?> facts, Class<T> type) throws Exception;
}
Run Code Online (Sandbox Code Playgroud)
另外,我有一个如下的通用实现,
public class DefaultMetodExecutor implements MethodExecutor {
public <T> List<T> execute(List<?> facts, Class<T> type) throws Exception
{
List<T> result = null;
//some implementation
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
至此,没有编译问题,
但是这个接口的具体实现无法编译,如下所示.
public class SpecificMetodExecutor implements MethodExecutor {
public <Model1> List<Model1> execute(List<Model2> facts, Class<Model1> type) throws Exception
{
List<Model1> result = null;
//some implementation specific to Model1 and Model2
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
如何为某些已定义的对象实现此接口?我需要去上课级别的泛型吗?
我需要随后执行七个独特的过程(一个接一个).数据存储在Mysql中.我正在考虑以下选项,如果我错了,请纠正我,或者是否有更好的解决方案.
质量要求:
从Db读取数据,最后执行七个过程(数据验证,计算1,计算2等),将处理后的数据写入DB.
需要以块的形式处理数据.
我的解决方案和问题:数据读取:
处理:
定义七个步骤和块,使用databean在步骤之间共享数据.但是,这不是一个好主意,因为数据进程在块中以及每个块之后,step1 writer将在databean中创建一组新数据.当此databean与其他步骤共享时,数据完整性将成为问题.
使用StepExecutionContext在步骤之间共享数据.但这可能会影响性能,因为这涉及批处理作业存储库.
只定义一个步骤,一个ItemReader和一个进程链(七个进程),并创建一个ItemWriter,将处理后的数据写入DB.但是,我将无法管理或监控每个不同的流程,所有流程都将一步到位.