很多动力来推动我来写这组文章,包括:
- 很多网站的资源非常不错,例如图片和视频,我们应该借助一些工具将它们下载并保存;
- 世面上很多流行的下载工具并不能满足对一个网站下所有或一部分资源的下载的要求,所以我自己来实现一个;
- 将一些不错的技术融入到一个小型应用中加以实践,能够对这些技术有更加深入的了解;
- 乘着Spring3.X的东风,这个应用应该由它来支撑,并通过这个应用来实战Spring框架为我们提供的诸多功能;
- HttpClient也是值得我们关注的一个开源框架,很多WebService框架都在用它。
我将通过这部连载文章,向大家一步一步展现一个批量资源下载器的设计和实现。正如上面提到的,写这个程序并不是目的,而是要通过这个程序来实战一些主流框架。这个程序最终能够将 The Big Picture
的所有图片批量下载并保存,并且能够自动检测更新。
这个程序的大致结构如下图所示:
程序的名称定为“BatchDownloader”,主要由以下模块构成:
- DataBase Access. 该模块用来完成对数据库的操作,在这部分功能里,我们将使用Hibernate框架来完成数据库持久化功能;
- HTTP & HTML. 该模块来处理http请求和html解析。对于http操作,我们将使用Apache的HttpClient来完成;对于html,我们将使用JSoup来解析html,这部分功能将作为资源被Spring管理;
- Engine & Schedule. 顾名思义,Engine是整个程序的驱动者,它负责按照一定的周期到指定的网站上去嗅探感兴趣的资源,并将这些资源封装成下载任务交友下载者去下载。对于Engine的任务调度,我们将使用Spring的内置Schedule功能来实现;
- Download & Executor. 这部分功能用来处理Engine委派下来的任务,通常情况下将有多于一个的下载器来处理任务,所以这就涉及到了多任务的Execute,这部分功能我们也采用Spring内置的Execute调度功能来实现;
- Event & listener. 这部分功能是前几部分功能解耦的关键,我们希望任务的分配、数据库的持久化等操作都能够异步进行从而提高效率,所以我们采用Spring的Event模型来处理这部分功能。
从这些功能来看,几乎每个模块都与Spring框架有或多或少的关系;从另外一方面看,既然这些功能都在Spring的控制之下,也从一个侧面说明了Spring作为容器框架的强大功能。这个应用旨在展现Spring的这些特性,是我们加深对它的理解和应用。该程序将使用Spring3.X,并且力争按照Spring所建议的Best Practise 去做,例如本程序将大量采用Annotation来代替XML从而避免XML配置的枯燥冗长。
这个程序将作为一个web应用发布,所以需要一个servlet容器,例如tomcat,但不需要J2EE容器。将这个程序做成web应用纯粹是为了演示如何搭建一个基于Spring的web工程,并非它就必须运行在servlet容器中,它甚至没有界面,所以它并不是一个典型的SSH应用,只能说是SH应用,Spring+Hibernate。欢迎有兴趣的同志们给它写几个基于web的UI,或者干脆将它改写成一个standalone应用。其实这些并不重要,这些也不是本系列文章讨论的主题,记住我们的目的,玩玩Spring,再干点有趣的事情
!
从下一篇起,我将按照顺序向大家呈现我的思路历程。节奏我会灵活把握,也欢迎大家拍砖!
- 大小: 19.4 KB
分享到:
相关推荐
基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的...
基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 基于spring boot餐厅管理系统源码 ...
基于SpringCloud的在线学习测评系统源码 基于SpringCloud的在线学习测评系统源码 基于SpringCloud的在线学习测评系统源码 基于SpringCloud的在线学习测评系统源码 基于SpringCloud的在线学习测评系统源码 ...
基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于SpringCloud微服务实现的互联网招聘平台源码 基于...
java毕业设计——基于spring boot的音乐播放网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的音乐播放网站设计与实现(源码+数据库).zip java毕业设计——基于spring boot的音乐播放网站设计与...
基于 Spring Cloud Hoxton 、Spring Boot 2.2、 OAuth2 的RBAC权限管理系统 基于数据驱动视图的理念封装 Ant Design Vue,即使没有 vue 的使用经验也能快速上手 提供 lambda 、stream api 、webflux 的生产实践 ...
在线教育平台服务端基于Spring Boot构建,采用Spring Cloud微服务框架。 持久层:MySQL、MongoDB、Redis、ElasticSearch 数据访问层:使用Spring Data JPA 、Mybatis、Spring Data Mongodb等 业务层:Spring IOC、...
1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,...
基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的快递驿站系统源码 基于SpringCloud的...
基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资分析系统 基于SpringCloud的趋势投资...
基于springcloud和vue微服务,前后端分离的后台管理框架,可以作为springcloud和vue的入门学习框架,亦可以作为一个基础脚手架进行二次开发 使用说明 1.新建数据库,导数数据库脚本(clouddo-admin的根目录下),...
基于springcloud+Netty+MQ+mysql的分布式即时聊天系统.zip基于springcloud+Netty+MQ+mysql的分布式即时聊天系统.zip基于springcloud+Netty+MQ+mysql的分布式即时聊天系统.zip基于springcloud+Netty+MQ+mysql的分布式...
基于Spring Cloud,Dubbo,Thrift微服务框架整合开发的IM社交系统(用Netty即时通讯技术+Tensorflow框架+Haar+Adaboost人脸识别技术).zip基于Spring Cloud,Dubbo,Thrift微服务框架整合开发的IM社交系统(用Netty...
毕业设计基于SpringCloud微服务分布式链路追踪系统源码 追踪实现 使用zipkin+sleuth实现 这个是比较成熟的分布式链路追踪实现方案 拦截器自定义实现 基于Google Dapper 论文,进行自定义实现。 原理: traceId :...
基于 Spring Boot + MySQL 开发的博客系统源码 基于 Spring Boot + MySQL 开发的博客系统源码 基于 Spring Boot + MySQL 开发的博客系统源码 基于 Spring Boot + MySQL 开发的博客系统源码 基于 Spring ...
基于Spring Boot 2.0.4.RELEASE 基于Spring Cloud Finchley.SR1 网关基于 Spring Cloud Gateway 提供Consul 服务注册发现版本pigxc 最终一致性的分布式事务解决方案 图形化代码生成,不会vue也能做到敏捷开发 基于 ...
基于spring+springMvc+mybatis 开发的企业门户网站基于spring+springMvc+mybatis 开发的企业门户网站,适合具有一定编程基础,比如计算机专业的大学生或者1-3年工作经验的开发人员。手写简化版 Spring 框架,了解 ...
springCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是, 跟...
Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...
基于 SpringCloud 的企业OA系统.zip基于 SpringCloud 的企业OA系统.zip基于 SpringCloud 的企业OA系统.zip基于 SpringCloud 的企业OA系统.zip基于 SpringCloud 的企业OA系统.zip基于 SpringCloud 的企业OA系统.zip...