1 概述
SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率
面试问spring的时候,带一下spring boot,有时候出去面试,也会问到spring boot,提的一个点,spring boot启动的时候一个流程图,本身他是spring这个项目发展到一定阶段之后的一个产物
spring框架,mybatis,spring mvc,去做一些开发,打包部署到线上的tomcat里去,tomcat启动了,他就会接收http请求,转发给spring mvc框架,调用controller -> service -> dao -> mybatis(sql语句)
java web开发的时候,在这里整合进来redis、elasticsearch、还有很多其他的一些东西,rabboldlumq、zookeeper,等等,诸如此类的一些东西
国外的spring开源社区,就发起了一个项目,spring boot,我们基于spring boot直接进行开发,里面还是使用spring + spring mvc + mybatis一些框架,我们可以一定程度上来简化我们之前的开发流程
做很多的配置,自己去定义一些bean,流程比较繁琐
spring boot内嵌一个tomcat去直接让我们一下子就可以把写好的java web系统给启动起来,直接运行一个main方法,spring boot就直接把tomcat服务器给跑起来,把我们的代码运行起来了
自动装配,比如说我们可以引入mybatis,我其实主要引入一个starter依赖,他会一定程度上个自动完成mybatis的一些配置和定义,不需要我们手工去做大量的配置了,一定程度上简化我们搭建一个工程的成本
引入一些mybatis的jar包,还有mybatis依赖的一些其他的jar包,然后动手编写一些xml配置文件,然后定义一些bean,写一些sql语句,写一些dao代码,此时就可以使用mybatis去执行sql语句了
只要引入一个starter,他会自动给你引入需要的一些jar包,做非常简单的、必须的一些配置,比如数据库的地址,几乎就不用你做太多的其他额外的配置了,他会自动帮你去进行一些配置,定义和生成对应的bean
生成的bean自动注入比如你的dao里去,让你免去一些手工配置+定义bean的一些工作
spring boot + spring + spirng mvc + mybatis + XXX之类的技术去进行开发,后续很多配置和定义的一些繁琐的重复性的工作就免去了,自动装配的一些功能,自动给你把一些事情干完了,不需要你去做了
spring boot关键的一些原理,和架构,画一张图,10来分钟的小视频,对spring boot的来龙去脉,有一个基本的了解和认识,基于spring boot开发的时候,他大致的一个工作流程是什么样子的
main,他自动启动一个内嵌的tomcat
1.1 SpringBoot功能
1) 自动配置
Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是SpringBoot自动完成的。
2) 起步依赖
起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。
简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
3) 辅助功能
提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
注意:Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。
2 为什么要学习SpringBoot
2.1 Spring的缺点
配置文件繁琐
引入的依赖过多
配置文件和业务逻辑之间需要频繁的切换
2.2 SpringBoot的优点
提供了默认的最优配置
引入的依赖少
Spring可以不使用XML配置Bean,使用注解注解配置
3 核心功能
3.1 起步依赖
好处:导入一个依赖,这个依赖会引用其他依赖
3.2 自动配置
有默认的配置,启动的时候会使用默认的配置
4 包结构
4.1 Sping Boot 建议的包结构
root package 结构:cn.giftsstore.myProject
myproject -src - main - java - cn.giftsstore.myProject - comm - domain - reposoldluory - service - web - Application.java - resources - static - templates - application.properties - test -pom.xml
注意:启动程序默认放到一个目录下而SpringBoot 注解 @SpringBootApplication默认扫描当前类的同包以及子包下的类
如:启动程序在包名 com.yang.test.ymkribbonconsumer下,则会查找所有com.yang.test.ymkribbonconsumer下的文件以及 com.yang.test.ymkribbonconsumer下的所有子包里面的文件。所以不放外面可能会造成扫描不到!
4.2 各包名介绍
Application.java:建议放到根目录下面,是项目的启动类,Spring Boot 项目只能有一个 main() 方法。
comm:目录建议放置公共的类,如全局的配置文件、工具类等。
domain:目录主要用于实体(Entoldluy)与数据访问层(Reposoldluory)。
reposoldluory:数据库访问层代码。
service:该层主要是业务类代码。
web:该层负责页面访问控制。
resources 目录下:
static:目录存放 Web 访问的静态资源,如 JS、CSS、图片等。
templates:目录存放页面模板(JSP,Thymeleaf)
application.properties:项目的配置信息。
test 目录存放单元测试的代码;pom.xml 用于配置项目依赖包,以及其他配置。
采用默认配置可以省去很多设置,当然也可以根据自己的喜好来进行更改。最后,启动 Application main 方法,至此一个 Java 项目搭建好了!
5 快速创建SpringBoot2.0工程
5.1 创建
5.2 测试
5.2.1 编写控制器
package com.oldlu.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class QuickStartController { @RequestMapping("/quick") @ResponseBody public String quick(){ return "springboot 访问成功!"; } }
5.2.2 运行项目的启动类
package com.oldlu; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MySpringBootApplication { public static void main(String[] args) { SpringApplication.run(MySpringBootApplication.class); } }
5.2.3 访问页面
打开浏览器访问url地址为:http://localhost:8080/quick