示例Demo:
1、我们先来创建一个空工程:
2、我们通过Maven来创建一个Module:
JDK版本需要选择17以及以上,如果没有的话你就下载一个:
3、让此Maven项目继承父项目:
所有的Springboot项目都必须继承自spring-boot-starter-parent
<!-- 所有的Springboot项目都必须继承自spring-boot-starter-parent --> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version> </parent>
这里注意,如果这段代码你是复制的中文文档里面的,一定要看清楚这个版本号,中文文档上的版本号对应的版本可能根本就不存在!!!
4、导入web开发的场景启动器
<dependencies><!--web开发的场景启动器,所有和Web相关的功能就都引入进来了 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> </dependencies>
所有和Web相关的功能就都引入进来了:
5、创建Springboot项目的主入口程序:
@SpringBootApplication //这是一个SpringBoot引用
public class MainApplication {public static void main(String[] args){SpringApplication.run(MainApplication.class,args);}
}
6、举例测试:
//@ResponseBody注解用于标识一个控制器方法,
// 可以将该方法的返回值作为响应报文的响应体,响应到浏览器@RestController //等同于:@Controller + @ResponseBody
public class HelloController {@GetMapping("/hello")public String hello(){return "Hello,SpringBoot 3";}
}
@ResponseBody:注解用于标识一个控制器方法,可以将该方法的返回值作为响应报文的
响应体,响应到浏览器
@RestController:复合注解
7、Springboot还能够简化部署:直接打个包即可
加入应用打包插件:
<!-- SpringBoot官方提供的应用打包插件--> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins> </build>
7.1 通过Maven把应用进行打包:把项目打成可执行的jar包
clean和package居然可以多选
7.2 打包成功:把项目打成可执行的jar包
7.3 运行成功
- 运行前记得把在idea运行的此项目停掉,要不然会有端口冲突:
- 我们直接可以在装有JDK17+的服务器上运行了,都不需要安装tomcat(Springboot有内嵌的tomcat),直接回车:
8、Springboot还能够简化运维:
修改配置只需在外部创建一个application.properties文件,在这个文件中修改好后,
重新运行此jar包即可:
8.1 直接在同目录下创建一个空的配置文件,比如说我要修改端口号:
8.2 然后重新运行此jar包:端口号已经修改成功了
9、Springboot特点总结:
1. 简化整合
导入相关的场景,拥有相关的功能。场景启动器
默认支持的所有场景:Developing with Spring Boot
- 官方提供的场景:命名为:
spring-boot-starter-*
- 第三方提供场景:命名为:
*-spring-boot-starter
场景一导入,万物皆就绪
- springboot官方提供的应用启动器会有前缀:spring-boot-starter-
***
- 第三方提供场景:命名为:
****-spring-boot-starter
2. 简化开发
无需编写任何配置,直接开发业务
3. 简化配置
application.properties
:
- 集中式管理配置。只需要修改这个文件就行 。
- 配置基本都有默认值
- 能写的所有配置都在: Common Application Properties
4. 简化部署
打包为可执行的jar包。
linux服务器上有java环境。
5. 简化运维
修改配置(外部放一个application.properties文件)、监控、健康检查。
.....
10、Spring Initializr 创建向导
选择我们当前的springboot需要哪些场景:
利用Spring Initializr 创建的项目相对于一键创建好了整个项目结构:
11、Springboot的便捷特性都依赖于这两个机制:
依赖管理机制、自动配置机制
思考:
1、为什么导入starter-web
所有相关依赖都导入进来?
- 开发什么场景,导入什么场景启动器。
- maven依赖传递原则。A-B-C: A依赖B,B依赖C,那么A就拥有B和C
- 导入场景启动器。 场景启动器就会自动把这个场景的所有核心依赖jar包全部导入进来
例如:你把web开发的场景启动器spring-boot-starter-web导入进来了,那么所有和Web相关的功能就都引入进来了:
2、为什么我们导入场景启动器的时候,版本号都不用写:
- 每个boot项目都有一个父项目
spring-boot-starter-parent:
- parent的父项目是
spring-boot-dependencies,在spring-boot-dependencies中管理了相关的依赖以及版本:
- 父项目 版本仲裁中心,把所有常见的jar的依赖版本都声明好了。
- 比如:
mysql-connector-j,我们只需要写依赖,不需要管版本:
3、自定义版本号
- 利用maven的就近原则,如果我自己声明了,就用我自己的版本号,没有声明,就用父项目里提供的版本号:
3.1、直接在当前项目properties
标签中声明父项目用的版本属性的key:
3.2、直接在导入依赖的时候声明版本:
4、第三方的jar包
- springboot父项目中没有管理的第三方jar包,则需要自行声明版本号,例如:
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.16</version>
</dependency>