1. 简介

SpringBoot越来越多的被应用于前后台分离的项目,本教程也是正是基于此,在学习过程中将SpringBoot的功能定位于后台的API。

目标

在本教程中,我们将共同开发『教务管理』系统。通过对该小型系统的开发,我们将了解SpringBoot是如何协助我们来开发具体项目的。
本系统包括登录与注销、教师管理、班级管理、学生管理和课程管理等功能模块。

image.png

本教程在于交流如何使用Spring Boot来开发后台,所以涉及到前台的部分我们将直接提供一个成品供我们对接。

适用人群

Spring Boot是当前应用最广泛的JAVA框架,其使用了最沿的技术,传递一种最新、最时尚、高效且适用于团队开发的思想。其IOC的思想同时也影响了众多的其它的框架。同时JAVA是一个完全面向对向的开发语言,拥有众多的高级特性。这些决定了学习SpringBoo的起点不会过低,在学习本教程前,我们假设你已经具备了以下能力:

  • 拥有使用其它框架(如ThinkPHP)开发小型系统的能力。
  • 对面向对象有一定的了解,从基本上了解对象与类的区别,熟练的掌握一般的控制语句。
  • 对基本的数据结构有了解。
  • 拥有一定的解决网络问题的能力,能够解决各种由于国内网络造成的问题。

欲速则不达,如果你还处于计算机小白阶段,我们强烈地推荐你先学习一些基础知识。多年的教学经验来看,这些基础的知识是早晚都要学习且躲不过的。

如果你还在寻找一门入门的教程,则推荐学习使用最伟大的语言PHP的ThinkPHP框架,相信我们的ThinkPHP5入门实例教程能够给你感受到高效的学习。

前后台分离

在正式开始前先了解下什么是前后端分离以及为什么要前后端分离,我们先看看日常生活中离不开的火车票相关系统:

虽然我们还不太清楚应该用什么语言来开发自助购(取)票终端、自动闸机以及火车票人工售票终端,但我们可以确认的是:无论使用哪种语言进行开发,都离不开用户交互(v层)、数据转发(C层)以及逻辑处理(M层)。CV层的功能由于交互界质、数据格式的不同会有所不同,但逻辑处理的思想却必然相同。比如购票时都需要校验车票的余额及完成支付。在前后端不分离的情况下,对于不同的终端我们可能需要在不同的语言下实现逻辑完全相同的功能,这无疑在增加了开发工作量的同时,也增大了出错的概率。更重要的是它将使得整套系统变得不可维护。所以我们急需一种方法来将逻辑相同的M层部分进行剥离,进而达到统一开发统一维护的目的。

我想这应该便是前后端分离的理由吧。

WEB前后端分离

手机APP是前后端分离的最典型的应用,在使用某个APP前我们首先要来个软件市场来下载这个应用。这个下载到手机中的应用便是APP前端。不同的用户启动相同的app应用看到的界面骨架都是一样的,相同的用户在不同的时间启动该APP看到的界面骨架也是一样的。但应用展示的内容却会随着用户不同、时间不同而不尽相同。这是由于骨架存在于APP前端应用中,大家下载的都一样;而内容存在于APP后端服务中,不同用户、不同条件请求后端服务得到的内容是不相同的。我们把这个无论对谁都一样、固定不变的骨架称为前端应用,把提供内容的称为后端应用。前端与后端应用配置工作,最终向用户展现了APP功能,则称为前后端分离的应用架构。

WEB的前后端分与手机APP应用前后端分离基本一致。在前后端分离的WEB应用中,也需要先下载一个前端应用到用户的浏览器中,然后浏览器自动的运行这个前端应用前端应用依自己的设定或用户的操作来请求WEB后端,后端按请求条件将特定的内容发送给前端应用

如图所示,浏览器在访问前后端分离的WEB应用时,首先请求并获取前端应用,然后前端应用再依次访问后端应用来获取对应的数据。前后端分离的WEB应用由于前后端可以直接的部署到不同的服务器上,所以可以将请求压力进行分离;由于前端应用在整个用户访问过程中仅请求一次,可以有效的降低冗余的数据的传输,近而减少用户请求次数、发送数据量,近一步的降低了服务器的压力;前后端分离后,前后端可以有不同的团队进行开发,系统被近一步地模块化,这有助于加快系统开发的速度;前后端分离要求在进行整体的系统开发前,规则好前后端的数据传输内容及格式,这使得开发团队在开发系统前必须对系统有个整体的认识,这将降低需求偏差。
如此,开发独立的用于逻辑处理、轻易达到各个前端数据统一的API便迫在眉睫。

学习方法之我见

本教程中的对很多问题的解释基于当前我们自身的水平以及我们揣测的读者的水平。在软件开发过程中,很自然的会遇到一些问题,在解决问题的过程中,我们倾向于找到一个自己可以认同并适用于解决当前问题的理论来支撑自己解决问题的方法。这个方法是否真的正确其实并不重要,只要在当前给我们足够支撑就够了。所以在教程中,有些东西我们会用自动来解释。问:为什么会是这样? 答: 自动。在笔者的教学与开发经验中,我认为这不失为一种特别有效的教学与学习方法。

有人说老师既然有些东西你明明知道讲的不对或是讲的不恰当,为什么不深入的讲一下呢?一方面是由于在适用的就是最好的这个理论的驱动下,有些事情我也没有搞清楚更深层次的原理;另一方面则还是在适用的就是最好的这个理论的驱动,我认为大家也没有必要非要在当前阶段搞清楚。这和平常我们学习一下,一定要清楚自己当前的学习目标。

比如:我们高中学习的经典物理中的牛顿的三定律,其中第二条是加速度定律,它在高中阶段为我们解决了很多的物理问题现实问题。但是如果是这样:这个我们一直某个物体上施加力F,那么就会有一直有加速度a,速度v必然会越来越大,上限应该是正无穷。这与在大学期间老师讲的一切物体的最大速度都不可能超载光速就相违背了。当我们发现f=ma在某些时候不适用的时候,我们进步了,得出了更适用的结论:牛二定律只有在速度不太大,质量不太小的时候是适用的。

适用的就是最好的,证真初步认识、证伪提升认识。人类的科学史也是证真、证伪中逐步发展向前的。

作者简介

一个毕业于一所不知名的院校、在一所不知名的学校任教、教着一些不知名的课程、带着一个不知名的团队、领着几个不知名的学生、做过几个不知名的项目的不知名的人。

在学习过程中有任何问题您都可以通过邮件联系到我:3792535@qq.com。