- 一. 回顾:Spring、SpringMVC
- 1.1 Spring框架
- 1.2 Spring MVC框架
- 二. Spring Boot
- 2.1 Spring Boot 诞生
- 2.2 Spring Boot 的理解
- 2.3 主要特性
- 2.4 集成第三方框架步骤
- 三. 缘起Hello World
Spring框架最核心特性IoC(控制反转)或者DI(依赖注入),以及AOP的容器框架。
它使得开发的耦合度降低,扩展性增强,从而简化企业开发,可以跟很多很多的第三方框架进行整合,例如MyBatis等等
(1)IOC是什么?
控制反转,帮我们管理Bean,创建和初始化(依赖)
(2)AOP是什么?
1.2 Spring MVC框架面向切面编程,在不改变原来代码的基础增加新的功能,底层实现动态代理(Java动态代理或者CGLIB的动态代理),
增强代码的位置:前置、后置、返回、异常、环绕
Spring MVC提供另一条友好的开发WEB应用程序(类似于Struts2框架)
(1)模板引擎是什么
模板引擎为了使用户页面和业务数据相互分离而产生,它将从后台返回的数据生成特定格式的文档,用于网站的模板引擎就是生成HTML文档。
(2)未来发展
在未来发展过程,基本上不会在使用模板引擎(JSP、Freemark,Thymeleaf)。使用模板引擎的目的是为了动态生成HTML页面
技术发展到现在,早已做到了动静分离(涉及到数据的传输格式,大部分都使用JSON格式,没有了动态生成html页面的过程),静态资源(HTML/JS/CSS/图片)静态资源会在一个单独的服务器(Nginx)
二. Spring Boot 2.1 Spring Boot 诞生在Spring Boot诞生之前,我们自己搭建SSM框架整合的过程中**,使用Spring框架需要配置很很多的文件(XML文件或者Java配置类)**,为了向Spring Boot转变的过程,我们特意忽略XML配置,直接使用Spring注解方式(即使使用注解,依旧要配置很多东西)。
随着WEB项目应用的需求的变化,我们大家环境之间的框架会越来越多(比如MongDB,Redis等框架),XML配置文件也会不断增加,容易造成配置文件难以理解并且“容易出错”。并且我们会发现很多的配置文件之间的配置内容总是不断重复,一般 我们会直接使用粘贴复制大法。
项目重复性太多、相同的配置太多、增加了工作量,所以我们可以把重复部分提取出来(构建一个应用场景,提供了最基本的配置方案(默认配置))
2.2 Spring Boot 的理解(1)自己接电线和标准化插座
Spring Boot的配置方式,就是像标准化的插头插座,都是有提供“统一标准(约定)”。
当使用第三方开源框架的时候,想进入Spring Boot生态圈,必须实现Spring
Boot提供标准,才能使用(需要按照标准制作一个starter场景适配),提供最基本的使用配置,我们也可以去改变默认的配置。
单独使用Spring MVC就像手动接线,很灵活,但是由于每个人不同的使用方式,接出来的效果会千差万别,而且容易出错,造成接手人员不适应。
SpringBoot虽然灵活性不如单独Spring MVC的方式,但是我们使用SpringBoot之后,不用清楚出内部是如何设计,我们只是会使用而已(但是对于我们自己,还需要知道内部是如何使用),话说回来,当我们习惯使用插头插座的时候,你不会期望自己成为电工。
Spring Boot的目标不在于为已解决的问题提供新的解决方案(SSM自己搭建),而是为平台带来一种新的开发体验(内部还是SSM搭建方案),换汤不换药,Spring Boot只是简化技术使用(配置和处理):
- 使配置变简单
- 使监控变简单
- 使部署变简单(内置WEB服务器,不需要我们自己配置)
- 使开发变简单(定制也不会太简单)
- 遵循“约定优于配置”的原则,简化配置(最重要)
- 可以完全脱离XML配置文 件,采用注解配置
- 内嵌Servlet容器,应用可以使用jar方式执行:java -jar
- 开发完成项目搭建(Maven或者Gradle),整合第三方类库,方便使用(实现标准)
- 提供starter,能够非常方便的进行包的管理,简化包管理配置(基本不要我们管理包的版本)
- 最大优势:微服务可以与Spring Cloud天然无缝集成,Spring Boot目前Java体系中实现微服务的最佳方案之一
(1)使用Maven引入springboot-XXX-starter资源(资源一定实现Spring Boot标准,提供默认的配置项,我们可以自定义)
(2)自定义:可以修改Spring Boot平台的默认配置文件application.properties或者application.yaml
(3)加入一个Java Config 配置类,属于个性化配置,如果采用默认配置,就不需要建立配置类
三. 缘起Hello World-
创建Spring Boot项目,项目Maven的配置
-
Spring MVC的场景:提供默认的配置项,直接可以使用(不需要你做任何事情)
-
创建完成
-
新建控制器,设置映射路径
package com.yue.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloWorldController {
@ResponseBody
@GetMapping("/hello")
public String test01(){
return "你好,世界!"+Math.random();
}
}
- 启动主程序,访问映射路径(不需要写任何配置,不需要自己配置服务器)
运行成功,由此我们知道不用配置SpringMVC依旧可以访问。那么SpringBoot默认引用了什么配置呢?我们去该项目下的pom文件中查看:
org.springframework.boot spring-boot-starter-web
通过此项依赖,即可引入SpringMVC。
并且不需要自己配置版本
Spring MVC的场景适配,提供了针对于Spring Boot版本对应的Spring MVC的版本,并且提供了默认的配置项
- 注意:
默认情况下,扫描的是主程序操作的包以及子包
所以如果建立控制器的位置在其以外会扫描不到
那么当我们的控制器不在其扫描范围的时候,解决方法如下:
改变主程序中@SpringBootApplication的属性scanbasePackages的值:
默认为空,按照当前目录找
经查看其源码发现它就是个数组,所以此时添加控制器所属路径的字符串即可
如@SpringBootApplication(scanbasePackages ={“com.yue”,"org.os"})



