Spring Boot-入门
Spring Boot简介
简化Spring应用开发的一个框架
整个Spring技术栈的一个大整合
J2EE开发的一站式解决方案
微服务
2014年,martin fowler在博客中提出
微服务:架构风格(服务微化)
一个应用应该是一组小型服务;可通过HTTP的方式进行互通
每一个功能元素最终都是一个可独立替换和独立升级的软件单元
Spring Boot HelloWorld
一个功能:
浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串
创建一个maven工程
导入spring boot相关依赖
1
2
3
4
5
6
7
8
9
10
11
12
13<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>编写一个主程序,启动Spring Boot应用
1
2
3
4
5
6
7
8
9
10/**
* @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
*/
public class HelloWordMainApplication {
public static void main(String[] args) {
// Spring 应用启动
SpringApplication.run(HelloWordMainApplication.class,args);
}
}编写相关Controller、Service
1
2
3
4
5
6
7
8
9
public class HelloController {
public String hello(){
return "Hello World";
}
}运行主程序
简化部署
1
2
3
4
5
6
7
8
9<!-- 这个插件,可以将应用打包成一个可执行jar包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>直接使用
java -jar
命令执行
Hello World探究
POM文件
父项目
1
2
3
4
5
6<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/>
</parent>它的父项目是:
1
2
3
4
5
6
7<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
<!-- 用来真正管理Spring Boot应用里面的所有依赖版本-->Spring Boot的版本仲裁中心:
以后导入依赖默认是不需要写版本的(没有在dependencies里面管理的依赖自然需要声明版本)
导入的启动器
1
2
3
4<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>spring-boot-starter-web:
- spring-boot-starter:spring-boot场景启动器,导入了web模块正常运行所依赖的组件
Spring Boot将所有的功能场景都抽取出来,做成一个个starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。需要什么功能就导入什么场景的启动器
主程序类/主入口类
@SpringBootApplication:Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用
@SpringBootConfiguration:SpringBoot的配置类,标注在某个类上,表示这是一个SpringBoot的配置类
@Configuration:配置类上来标注这个注解
配置类---配置文件;
配置类也是容器中的一个组件@Component
@EnableAutoConfiguration:开启自动配置功能
需要配置的部分,Spring Boot自动配置,使用@EnableAutoConfiguration才能生效
- @AutoConfigurationPackage:自动配置包
- @Import({Registrar.class}):Spring的底层注解@import,给容器中导入一个组件;将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器
- @Import({AutoConfigurationImportSelector.class}):给容器中导入组件
- AutoConfigurationImportSelector:导入哪些组件的选择器;将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中;会给容器中导入非常多的自动配置类;就是给容器中导入这个场景需要的所有组件,并配置好这些组件;有了自动配置类,就免去了手动编写配置注入功能组件等工作
- @AutoConfigurationPackage:自动配置包
使用Spring Initializer快速创建SpringBoot项目
- 选择我们需要的模块,向导会联网创建Spring Boot项目
- 默认生成的Spring Boot项目
- 主程序已经生成好了,我们只需要编写我们自己的逻辑代码
- resources文件夹目录结构
- static:保存所有的静态资源:js、css、images
- templates:保存所有的模板页面:Spring Boot默认jar包使用嵌入式的tomcat,默认不支持jsp页面,可以使用模板引擎(freemarker、thymeleaf)
- application.properties:Spring Boot应用配置文件 ,可以修改一些默认设置