系统中原来有个接口,已经有好几个实现类,我想新增一个接口,注入bean的时候能够调用,但又不想其他实现类实现,修改其他人的代码。
实现方式:
接口中新增 default 方法, default方法可以不需要实现类重写。
接口:
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
public interface IExcelCheckService extends ExcelCheckManager<Object> {
/**
* 解析并校验
*
* @param file MultipartFile文件
* @return e
* @throws Exception e
*/
default EasyExcelListener read(
MultipartFile file,
ExamInputExistDataDto examInputExistDataDto,
Integer headNumber
) throws Exception {
return null;
}
/**
* 生成错误的文件
* @param easyExcelListener 失败的保存路径
* @param failBookPath 路径
* @param fileName 文件名
*/
void createErrExcel(EasyExcelListener easyExcelListener,
String failBookPath,
String fileName) throws Exception;
}
实现类:
@Override
public EasyExcelListener read(
MultipartFile file,
ExamInputExistDataDto examInputExistDataDto,
Integer headNumber
) throws Exception {
this.examInputExistData = examInputExistDataDto;
return CustomEasyExcelUtil.read(
file.getInputStream(),
this,
SysDeptExcelDto.class,
headNumber);
}
参考实现:
spring框架中有很多这种设计