目录
- SpringBoot介绍
- Spring Boot的诞生
- SpringBoot特点
- Spring和Spring Boot的关系
- Spring Boot的优点和缺点
- Spring Boot优点
- Spring Boot缺点
- 快速创建Spring Boot项目
- IDEA创建SpringBoot工程
- 1.打开IDEA,选择Spring Initlializr
- 2.选择SpringBoot版本和初始化依赖
- 3.更改boot版本和JDK版本
- 4.启动
- Spring Boot项目的结构解析
- pom.xml文件中的父级依赖
- 开箱即用的起步依赖 spring-boot-starter-xx
- Spring Boot项目的入口类
- SpringBoot的核心注解:@SpringBootApplication
- Spring Boot项目的配置文件
- yml格式的配置文件
- 语法规则
- 案例:修改启动端口
- Spring Boot 项目的启动Banner
- Spring Boot中简化编码
- 代码示例
- 思考
SpringBoot介绍
- 官网:https://spring.io/projects/spring-boot
- Spring Boot(英⽂中是“引导”的意思),是⽤来简化Spring应⽤的搭建到开发的过程
- Spring Boot 可以轻松创建可以“直接运行”的独立的、生产级的基于 Spring 的应用程序
- Spring Boot 只要很少的Spring配置就可以完成第三方组件的整合
- 因为“习惯优先于配置”的原则,使得Spring Boot在快速开发应⽤和微服务架构实践中得到⼴泛应⽤。
- 装好JDK环境和 Maven⼯具就可以使用Spring Boot了
Spring Boot的诞生
- 这一要求促使了 2013 年初,开始启动Spring Boot 项目的研发。
- Spring Boot的设计初衷是解决Spring各个版本配置工作过于繁重的问题,简化搭建流程、降低开发难度,使开发人员只需要专注应用程序的功能和业务逻辑的实现,而不用再配置上花费太多的时间。
- Spring Boot使用“习惯优先于配置”的理念,提供了很多已经集成好的方案,以便于程序员在开发程序时能做到零配置或极简配置。
- Spring Boot 并不是用来替代 Spring 的解决方案,而是和Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
SpringBoot特点
- 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
- 内嵌Tomcat或Jetty等Servlet容器;
- 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
- 尽可能自动配置Spring容器;
- 提供准备好的特性,如指标、健康检查和外部化配置;
- 绝对没有代码生成,不需要XML配置。
Spring和Spring Boot的关系
- Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test等这些模块缩短应用程序的开发时间,提高了应用开发的效率。
- Spring Boot是Spring框架的扩展和自动化,它消除了设置Spring应用程序所需的XML配置,使得开发变得更快、更高效、更自动化。
- Spring Boot 不是Spring 的替代者。Spring Boot 其实是依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring做好各种企业级项目开发的准备。
Spring Boot的优点和缺点
Spring Boot优点
- 快速构建项目,开箱即用,提供各种默认配置来简化项目配置
- 直接嵌入Tomcat、Jetty或Undertow等内嵌式容器简化Web项目,可独立运行
- 没有冗余代码生成和XML配置的要求
- 对主流开发框架的无缝集成
- 提供运行时的应用监控
- 极大地提高了开发、部署效率
Spring Boot缺点
- 版本迭代速度很快,需要关注版本的变化
- 配置简化,排错要求高
- 入门容易,深入原理难
快速创建Spring Boot项目
其实 Spring Boot 工程本质上就是一个 Maven 工程
-
在线方式(Spring Initializr):https://start.spring.io
-
Maven工程
-
IDEA工具方式
IDEA创建SpringBoot工程
1.打开IDEA,选择Spring Initlializr
2.选择SpringBoot版本和初始化依赖
3.更改boot版本和JDK版本
4.启动
直接启动package中默认的MybootApplication中的main即可
启动LOGO
Spring Boot项目的结构解析
pom.xml文件中的父级依赖
- Spring Boot父级依赖: 这个标签是在配置 Spring Boot 的父级依赖,有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签
开箱即用的起步依赖 spring-boot-starter-xx
- 为什么引入 spring-boot-starter-web 就能使用 Spring MVC 的功能呢?
- 看到这应该明白了吧, spring-boot-starter-web 这个 starter 中其实内部引入了 Spring 、 SpringMVC 、 Tomcat 的相关依赖,当然能够直接使用Spring MVC相关的功能了。
Spring Boot项目的入口类
- 项目创建成功以后,会创建启动类,类的命名:项目名+Application。MybootApplication是一个很关键的启动类,程序的入口就是这里@SpringBootApplication是Spring Boot项目的核心注解,主要目的是开启自动配置
SpringBoot的核心注解:@SpringBootApplication
启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下3 个注解:
- @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
- @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
- @ComponentScan:Spring组件扫描
Spring Boot项目的配置文件
- Spring Boot 支持两种配置文件形式
- .properties
- .yml(推荐使用)
- Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录下
- Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改
- 创建Spring Boot 工程时,默认 resources 目录下就有 application.properties 文件
yml格式的配置文件
- YAML的配置方式,都采用阶梯化缩进的方式展现,其结构显得更为清晰易读
语法规则
- 大小写敏感
- 数据值前必须有空格,作为分隔符
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- “#”表示注释
案例:修改启动端口
Spring Boot 项目的启动Banner
若要修改启动LOGO,在src/main/resources目录下新建banner.txt文件,然后将自己的图案黏贴进去即可,比如:
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
_(\_/)
,((((^`\
(((( (6 \
,((((( , \
,,,_ ,((((( /"._ ,`,
((((\\ ,... ,(((( / `-.-'
))) ;' `"'"'""(((( (
((( / ((( \
)) | |
(( | . ' |
)) \ _ ' `t ,.')
( | y;- -,-""'"-.\ \/
) / ./ ) / `\ \
|./ ( ( / /'
|| \\ //'|
|| \\ _//'||
|| )) |_/ ||
\_\ |_/ ||
`'" \_\
`'"
Spring Boot中简化编码
代码示例
- 需求:新建"HelloController"控制器,定义方法index,输出”Hello,String Boot”。
- 添加包名com.zjl.controller,添加新的类HelloController
- 注意事项:处理请求的控制器必须和程序入口类在同一级别的包中(例如:在com包),否则无法使用
package com.zjl.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author: zjl
* @datetime: 2024/4/22
* @desc:
*/
@RestController
public class HelloController {
@RequestMapping("/index")
public Object index(){
return "Hello,String Boot";
}
}
思考
不仅仅是@Controller的类,还有@Service的类、@Mapper的接口、@Component的类等这类注解,为什么要放在启动类所在的包下呢?
- 启动类头上,核心注解@SpringbootApplication这个注解是由三个注解组成的,点开一开:注意 @ComponentScan 这个注解
- @ComponentScan 这个注解的作用是告诉spring,哪里可以找到bean, 如果在启动类没有配置这个注解,则默认扫描启动类所在的包的同级目录和它的子包,也可以配置具体路径扫描。 基于这个作用所以不能把启动类放在Java文件下,首先Java文件不是一个包,其次它是一个资源文件。故只要一启动就会报错!!!
- 做过web开发的同学一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中
- 同时,它还可以扫描到所有的配置类,将配置类中的配置扫描到容器中!
所以,放在“指定位置”上,是一种规定!!!