1.引言
1.1.SpringBoot简介
1.1.1什么是Spring Boot
SpringBoot是一个可使用Java构建微服务的微框架。是Spring框架及其社区对“约定优先于配置”理念的最佳实践。Sping Boot的设计目的是让你尽可能快地启动和运行,而无需预先配置Spring。Spring Boot以以一种固定的方式来构建可用于生产级别的应用程序。
一般把Spring Boot称为搭建程序的脚手架或者说是便捷搭建基于Spring的工程脚手架。其最主要作用就是帮助开发人员快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让开发人员关注业务而非配置。
1.1.2 Spring的发展历史
Spring1.x时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。
Spring2.x时代 随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行声明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。
那么,问题来了,究竟是应该使用xml还是注解呢?
最佳实践:
1、 应用的基本配置用xml,比如:数据源、资源文件等;
2、 业务开发用注解,比如:Service中注入bean等;
Spring3.x到Spring4.x到Spring5.x 从Spring3.x开始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,现在我们就处于这个时代,并且Spring4.x和Springboot都推荐使用java配置的方式
1.2.为何学习Spring Boot
java一直被人诟病的一点就是臃肿、麻烦。当我们还在辛苦的搭建项目时,可能Python程序员已经把功能写好了,究其原因注意时两点:
1.2.1复杂的配置
项目各种配置其实是开发时的损耗,因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用逻辑的时间。
1.2.2混乱的依赖管理
项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这实在棘手。而且依赖管理也是种耗损,添加依赖不是写应用程序代码。一旦选错了版本,随之而来的不兼容问题毫无疑问会是生产力杀手。
1.3原有Spring优缺点分析
1.3.1 Spring的优点分析
Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。
1.3.2 Spring的缺点分析
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。
所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。
除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
1.4.Spring Boot开发版本推荐
(1)Spring boot目前分为两大版本系列,1.x系列和2.x系列
(2)如果是使用eclipse,推荐安装Spring Tool Suite (STS)插件
(3)如果使用IDEA旗舰版,自带了Spring Boot插件
(4)推荐使用Maven 3.3+,Maven目前最新版本为3.6.0(2019.01)
(5)推荐使用Java 8,Spring Boot 1.x系列的版本兼容Java 6,Spring Boot 2.x系列需要至少Java8
2.Spring Boot项目开发步骤
以idea为例
项目名称:balabala
互联网链接:start.spring.io
2.1创建一个New Project
(1) 创建一个Module,选择类型为Spring Initializr快速构建
(2)选择 Web 依赖 和 Spring Boot 版本号,点击create
(3)至此创建完成
(4)打开Project Structure ,配置sdk版本,根据项目要求情况来配置sdk
(5)通过改造 Maven 工程创建,IDEA配置Maven,进入file->settings,在搜索框中搜索maven
(6)配置后,点击刷新按钮
此时maven配置成功。
3.Spring Boot快速入门
3.1.代码实现
3.1.1添加SpringBoot依赖
接着上面的步骤,添加SpringBoot的起步依赖SpringBoot要求,项目要继承SpringBoot的起步依赖spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
3.1.2编写SpringBoot引导类
SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.1.3 编写Controller
要通过SpringBoot提供的引导类起步SpringBoot才可以进行访问
package cn.js.ccit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Unit21Application {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class);
}
}
在引导类MySpringBootApplication同级包或者子级包中创建QuickStartController
package cn.js.ccit.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloControllerController {
@RequestMapping("/quick")
@ResponseBody
public String quick(){
return "springboot 访问成功!";
}
}
3.1.5 测试
执行SpringBoot起步类的主方法,控制台打印日志如下:
通过日志发现,Tomcat started on port(s): 8080 (http) with context path ‘’
tomcat已经起步,端口监听8080,web应用的虚拟工程名称为空
打开浏览器访问url地址为:http://localhost:8080/quick
3.2.快速入门分析
SpringBoot代码解析
@SpringBootApplication:标注SpringBoot的启动类,该注解具备多种功能(后面详细剖析)
SpringApplication.run(MySpringBootApplication.class) 代表运行SpringBoot的启动类,参数为SpringBoot启动类的字节码对象
2.2.3 SpringBoot工程热部署
我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大量的时间,我们可以在修改代码后不重启就能生效,在 pom.xml 中添加如下配置就可以实现这样的功能,我们称之为热部署
<!--热部署配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
4.怎样更快有效学习springboot
如果你是一个Spring Boot框架的初学者,以下是一些学习该框架的建议步骤:
4.1掌握Java基础知识
在学习Spring Boot之前,建议先掌握Java编程语言的基础知识,包括面向对象编程(OOP)的概念、Java语法、集合框架等。这将有助于你更好地理解和应用Spring Boot的概念和特性。
4.2学习Spring框架
Spring Boot是基于Spring框架构建的,因此建议先学习Spring框架的核心概念和功能。了解Spring框架的依赖注入、控制反转(IoC)、面向切面编程(AOP)等概念对学习Spring Boot非常有帮助。
4.3阅读官方文档和教程
Spring Boot有详细的官方文档,其中包含了对框架的全面介绍、示例代码和配置指南。阅读官方文档是学习Spring Boot的最佳途径。此外,还可以查找一些优质的Spring Boot教程和指南,帮助你更好地理解和应用框架。
4.4实践项目
学习Spring Boot最好的方式是通过实际项目来应用所学知识。选择一个小型的项目,尝试使用Spring Boot搭建和开发,实践中你会遇到各种问题和挑战,通过解决这些问题来加深对框架的理解。
4.5探索Spring Boot生态系统
Spring Boot拥有庞大的生态系统,有许多与其兼容的库和工具。探索Spring Boot的生态系统,了解并尝试集成一些常用的库,如Spring Data、Spring Security、Thymeleaf等,扩展你的应用程序的功能。
4.6参与社区和交流
加入Spring Boot的开发者社区,参与讨论和交流,向经验丰富的开发者学习和寻求帮助。这将帮助你更快地解决问题,学习到更多实际应用的经验。
5.我对于Spring Boot的学习
我通过学习线上课程,阅读相关文档与教程,参加线下实践项目来学习Spring Boot。在学习过程中,我逐渐学会了Spring Boot的用法,并且通过实践项目加深理解与应用的方法。并且产生了一些心得体会。
学习Spring Boot的过程可以分为以下几个步骤:
5.1掌握Spring框架基础
在学习Spring Boot之前,首先需要对Spring框架有一定的了解。了解Spring的核心概念和基本用法,如依赖注入、控制反转、AOP等。这将为后续学习Spring Boot打下坚实的基础。
5.2学习Spring Boot的核心概念
了解Spring Boot的核心概念和特点,如约定优于配置、自动配置、内嵌服务器等。可以通过阅读官方文档、书籍或在线教程来学习这些概念。
5.3搭建开发环境
下载并配置Java开发环境,安装并配置Maven或Gradle作为构建工具。Spring Boot默认使用Maven作为构建工具,但也支持Gradle。
6.学习总结
自我学习以来,我知道了Spring Boot 是一种构建 Java 应用程序效率非常高的框架,由于其灵活性、简单性和可扩展性,越来越多的开发者开始使用它来构建生产就绪的应用程序。在我看来,Spring Boot 的优点主要有以下几点:
6.1快速开发
Spring Boot 提供了一套开箱即用的集成环境,使得开发者可以轻松地快速开发应用程序。
6.2 自动配置
Spring Boot的自动配置功能可以根据用户的需求自动配置应用程序的多个模块,例如数据库、数据源、Web 服务器等。
6.3 微服务支持
Spring Boot 支持微服务化架构,使得开发者可以构建高度可扩展的和分布式的应用程序。
6.4.优化性能
Spring Boot 自带多种性能优化工具,使得应用程序可以更加高效地运行。
6.5社区活跃
Spring Boot 拥有庞大的社区支持,开发者可以检索到许多技术文档和解决方案,有助于快速解决问题。
总结来说,Spring Boot 是一款非常强大的框架,能够大大提高 Java 应用程序的开发效率,同时也具备较高的可扩展性和性能优化能力。与此同时,它也是一个庞大的社区,拥有大量的技术文章和解决方案,可以帮助开发者快速开发高质量的应用程序。
7.项目学习拓展
7.1 mall
项目地址:https://gitee.com/macrozheng/mall?_from=gitee_search
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
7.2 Cloud-Platform(微服务的)
项目地址:https://gitee.com/geek_qi/cloud-platform
Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。核心技术采用Spring Boot 2.1.2以及Spring Cloud (Greenwich.RELEASE) 相关核心组件,采用Nacos注册和配置中心,集成流量卫兵Sentinel,前端采用vue-element-admin组件。
7.3 spring-boot-pay(各种支付案例)
项目地址:https://gitee.com/52itstyle/spring-boot-pay
这是一个支付案例,提供了包括支付宝、微信、银联在内的详细支付代码案例,对于有支付需求的小伙伴来说,这个项目再合适不过了。
7.4 spring-boot-seckill(秒杀案例)
项目地址:https://gitee.com/52itstyle/spring-boot-seckill
从0到1构建分布式秒杀系统,脱离案例讲架构都是耍流氓,SpringBoot开发案例从0到1构建分布式秒杀系统,项目案例基本成型,逐步完善中。
7.5 springboot-plus (后台管理系统)
项目地址:https://gitee.com/xiandafu/springboot-plus
一个基于SpringBoot 2 的管理后台系统,包含了用户管理,组织机构管理,角色管理,功能点管理,菜单管理,权限分配,数据权限分配,代码生成等功能 相比其他开源的后台系统,SpringBoot-Plus 具有一定的复杂度。系统基于Spring Boot2.1技术,前端采用了Layui2.4。 数据库以MySQL/Oracle/Postgres/SQLServer为实例,理论上是跨数据库平台。
7.6 litemall(电商)
项目地址:https://gitee.com/linlinjava/litemall?_from=gitee_search
一个商城项目,包括Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端。
小商城功能:首页、专题列表、专题详情、分类列表、分类详情、品牌列表、品牌详情、新品首发、人气推荐、优惠券列表、优惠券选择、团购(团购业务有待完善)、搜索、商品详情、商品评价、商品分享、购物车、下单、订单列表、订单详情、地址、收藏、足迹、意见反馈、客服; 管理平台功能:会员管理、商城管理、商品管理、推广管理、系统管理、配置管理、统计报表。
7.7 jeeSpringCloud(微服务)
基于SpringBoot2.0的后台权限管理系统界面简洁美观敏捷开发系统架构。核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。互联网云快速开发框架,微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块和监控、服务模块。模块包括:定时任务调度、服务器监控、平台监控、平台设置、开发平台、单点登录、Redis分布式高速缓存、会员、营销、在线用户、日志、在线人数、访问次数、调用次数、直接集群、接口文档、生成模块、代码实例、安装视频、教程文档 代码生成(单表、主附表、树表、列表和表单、redis高速缓存对接代码、图表统计、地图统计、vue.js)、dubbo、springCloud、SpringBoot、mybatis、spring、springmvc。
7.8 NiceFish
项目地址:https://gitee.com/mumu-osc/NiceFish
NiceFish(美人鱼) 是一个系列项目,目标是示范前后端分离的开发模式:前端浏览器、移动端、Electron 环境中的各种开发模式;后端有两个版本:SpringBoot 版本和 SpringCloud 版本。
7.9 zscat_sw (电商)
项目地址:https://gitee.com/catshen/zscat_sw
基于springboot dubbo构建的一个商城项目,包括前端,后端和h5应用,小程序,作为zscat应用实践的模板项目。包含sso登录、API网关、流量控制、自定义协议包装、、自动crud、自动缓存、读写分离、分布式缓存、分布式定时任务、分布式锁、消息队列、事件机制、oauth2.0登录、全文搜索、集成qiniu文件服务、集成dubbo、集成springcboot等功能。