为什么datasoure要转换成DataHandler,两者有什么不同
追答哦,前面有些错误,那个 DataHandler 是用来做这个推迟的过程的,DataSource 只是一层抽象。
DataHandler 才有 Mime Type,它还直接从它的 data source 中拿 input stream 或 output stream。
这个在 Java activation framework 这个 API 中的作用就是延迟真实的数据读写,让我们告诉它的 mime type 及与什么文件位置进入读写操作。至于这其中的 Data Source 抽象层是因为我们不只是要支持基于 File I/O,还需要支持基于内存的 byte[] 的 I/O 操作,我们就需要一层抽象。这样当我们想直接把内存中的byte[] 或一个 image 对象编码到邮件中时就可以自己实现一个 data source 来处理了。这个过程中 data handler 则是不需要为 这种 I/O 的差异而改变,一般来说 API 被设计出来不需要太多改变,需要改变的部分一般是设计成 interface 而不是 class,并再提供一个 SPI (Service Provider Interface) 来自动化配置过程(不修改源码自动挂接新的实现类的方式)。