SpringBoot简介
SpringBoot是什么?
产生背景:Spring开发变的越来越笨重,大量的XML文件,繁琐的配置,复杂的部署流程,整合第三方框架难度大等,导致开发效率底下。
SpringBoot是一个用来简化Spring应用的初始创建和开发过程的框架,简化配置,实现快速开发。
整合了整个Spring的技术栈,JavaEE开发的一站式解决方案。
SpringBoot有什么特点?
优点:
- 快速创建独立运行的Spring项目并与主流框架集成;
- 内置Servlet容器,应用无需打成war包;
- 使用starter(启动器)管理依赖并进行版本控制;
- 大量的自动配置,简化开发;
- 提供准生产环境的运行时监控,如指标、健康检查、外部配置等;
- 无需配置XML,没有冗余代码生成,开箱即用。
第一个SpringBoot程序
简介
环境:
- SpringBoot 2.0 (基于Spring 5.0)
- JDK 1.8及以上
- Maven 3.2及以上
- Tomcat 8.5及以上
- IDEA较新版本
操作步骤
步骤:
1. 创建一个maven的java工程
传统的web应用需要创建web工程,后期要打包war包,然后放到tomcat中,太麻烦。
而SpringBoot应用只需要创建一个Java工程,后期直接打包可执行的jar包,内置tomcat。
2. 导入SpringBoot的相关依赖
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
</parent>
<!-- Add typital dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3. 编写Service、Controller等
@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "Hello World";
}
}
4. 编写主程序类,用来启动Spring应用
/**
- 使用 @SpringBootApplication 标注主程序类,
- 表示这是一个SpringBoot应用
*/
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
/**
* 启动SpringBoot运用
*
* 传入主程序类的Class对象
*/
SpringApplication.run(MainApplication.class,args);
}
}
【注】:默认只扫描主程序类所在的包及其子包
5. 部署打包
添加插件,将应用打包成可执行的jar,执行java -jar springboot01-helloworld-1.0-SNAPSHOT.jar
<!--该插件可以将应用打包成一个可执行的jar包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
分析Hello World
3.1 POM文件
- 父工程
SpringBoot的父工程,默认:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
</parent>
- 父工程是:spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.1</version>
</parent>
- 父工程的父工程是:spring-boot-dependencies,用来管理springBoot应用中的依赖的版本,进行版本控制
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
- 通过starter指定依赖
<dependencies>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependencies>
SpringBoot提供了许多starter(启动器),分别对应不同的功能场景,挡在项目中引入这些starter时,相应场景的依赖就会被导入进来
3.2 主程序类
@SpringBootApplication
标注在类上,表示这个是SpringBoot的主配置类,通过运行该类的main方法,来启动SpringBoot运用
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
@SpringBootConfiguration
标注在类上,表示这个类是SpringBoot的配置类
层级关系:@SpringBootConfiguration–>@Configuration–>@Component
@Configuration标注在类上,表示这个类是Spring的配置类,相当于是一个xml配置文件
@EnableAutoConfiguration
开启自动配置功能,SpringBoot会自动完成许多配置,简化了以前繁琐的配置
SpringBoot在启动时会类路径下/META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类添加到容器中,将这些自动配置类会帮我们完成许多配置工作。
@ComponentScan
标注在类上,指定要扫描的包