
本案例介绍基于Ribbon实现文件上传。整个应用分为3个微服务项目,分别是Eureka服务器项目mweathereurekaserver、文件上传服务提供者项目uploadfile、文件上传服务消费者项目fileuser。
本案例中Eureka服务器项目mweathereurekaserver的实现方法和 上一篇 中的实现方法相同,请参考 上一篇 第一节说明和参考书附带的源代码。
实现文件上传服务提供者项目uploadfile
1
●
新建项目并添加依赖
新建项目uploadfile,确保在文件pom.xml的<dependencies>和</dependencies>之间添加了Eureka Client、Thymeleaf、Lombok、Web依赖。
2
●
创建类
依次在包com.bookcode下创建exception、service、controller等子包。并在包com.bookcode.exception中创建类StorageException、StorageFileNotFoundException,在包com.bookcode.service中创建类StorageService,在包com.bookcode.controller中创建类FileUploadController、UploadPictureController,并修改这些类的代码。
3
●
新建文件和修改配置文件
在目录src/main/resources/templates下创建文件index.html、welcome.html、uploadForm.html,并修改这些文件的代码。
修改在目录src/main/resources下的配置文件application.properties。
上述文件的具体代码请参考本书附带的源代码。
实现文件上传服务消费者项目fileuser
1
●
新建项目并添加依赖
新建项目fileuser,确保在文件pom.xml的<dependencies>和</dependencies>之间添加了Eureka Client、Web依赖。
2
●
创建类、修改配置文件和配置文件
在包com.bookcode中创建类CallFileUpload、FileUploadController,并修改这些类的代码。
修改入口类,增加实现负载均衡的代码。
修改在目录src/main/resources下的配置文件application.properties。
上述文件的具体代码请参考本书附带的源代码。
程序运行结果
在D盘创建一个文件夹upload-dir。
依次运行项目mweathereurekaserver(端口为8761)、uploadfile(服务名称为file-upload,端口为8093)、fileuser(端口为8099)。
在浏览器中输入localhost:8093,结果如图C-1所示。

■ 图C-1在浏览器中输入localhost:8093的结果
单击“选择文件”按钮,如图C-1所示,选择要上传的文件,再单击Upload按钮,结果如图C-2所示。

■ 图C-2正确上传文件后的结果
在浏览器中输入localhost:8093/upload,结果如图C-3所示。

■ 图C-3在浏览器中输入localhost:8093/upload的结果
单击图C-3中“选择文件”按钮,选择要上传的文件,再单击图C-3中“上传”按钮,结果如图C-2所示。
在浏览器中输入localhost:8099/uponefile,结果如图C-4所示。

■ 图C-4在浏览器中输入localhost:8099/uponefile的结果
单击图C-4中“选择文件”按钮,选择要上传的文件,再单击Upload按钮,结果如图C-5所示。

■ 图C-5在图C-4或C-6的基础上正确上传文件后的结果
在浏览器中输入localhost:8099/upfiles,结果如图C-6所示。单击图C-6中“选择文件”按钮,选择要上传的文件,再单击“上传”按钮,结果如图C-5所示。

■ 图C-6在浏览器中输入localhost:8099/upfiles的结果
保持原有项目uploadfile(端口为8093)中其他所有文件不变,只修改配置文件application.properties中设置端口的代码,再启动两个与项目uploadfile微服务内容相同的新服务器(端口分别为8095、8096)。在浏览器中输入localhost:8099/greet,并不断进行刷新页面操作,会依次循环显示如图C-7(对应的服务器端口为8093)、图C-8(对应的服务器端口为8095)、图C-9(对应的服务器端口为8096)所示的结果。

■ 图C-7由端口为8093的服务器提供服务的结果

■ 图C-8由端口为8095的服务器提供服务的结果

■ 图C-9由端口为8096的服务器提供服务的结果
与本案例类似的代码可以参考网址https://github.com/JavaCodeMood/spring-cloud-demo/tree/master/file-upload,读者可以对比此网址的代码和本书附带的源代码,加深对Ribbon应用开发的认识。

扫码观看视频讲解 限免3天
参考书籍

《Spring Cloud 微服务开发实战-微课视频版》
ISBN:9787302542346
作者:吴胜
定价:49.9元












