在spring-boot代码

时间:2016-04-11 07:37:59

标签: spring polymorphism refactoring conditional code-cleanup

我看过马丁福勒重构的例子Here

不确定如何以spring-boot方式(IoC)实现它。

我正在开发spring web应用程序。 我有一个REST控制器,它接受studentIdfileType并以给定fileType格式导出学生的数据。 控制器调用ExportService exportFile()方法,看起来像

@Service
public class ExportServiceImpl implements ExportService {
    public void exportFile(Integer studentId, String fileType) {
        if (XML.equals(fileType)) { exportXML(studentId);}
        else if()... // and so on for CSV, JSON etc
    }
}

将条件重构为多态,

首先我创建了抽象类

abstract class ExportFile {
    abstract public void doExport(Integer studentId);
}

然后我为每个fileType导出创建服务。例如,XML导出以下是服务,

@Service
public class ExportXMLFileService extends ExportFile {
    public void doExport(Integer studentId) {
        // exportLogic will create xml
    }
}

现在我的ExportService应该是,

@Service
public class ExportServiceImpl implements ExportService {
    @Autowired
    private ExportFile exportFile;

    public void exportFile(Integer studentId, String fileType) {
        exportFile.doExport(studentId);
    }
}

现在我被困住了:(

无法得到, @Autowired ExportFile如何根据fileType了解要引荐的具体服务?

如果我错了,请纠正我。非常感谢您的回复:)

0 个答案:

没有答案