文章目录
一、SpringBoot简介
1.SpringBoot是什么?
- 生产背景:Spring开发变得越来越笨重,大量的xml文件,繁琐的配置,复杂的部署流程,整合第三方框架框架难度大,导致开发效率比较低下(前期框架搭建太复杂)。因此,在这种情况下,SpringBoot被开发而生!
2.为什么使用SpringBoot
SpringBoot是一个用来简化Spring应用的初始创建和开发过程的框架,简化了配置,实现了快速开发
- 整合了整个Spring技术线,
- 能简单的创建一个独立运行的Spring项目,并且可以与主流框架进行集成
- 内置Servlet容器,应用无需打成war包
- 使用Starter(启动器)管理依赖并进行版本的控制
- 大量的自动配置,简化开发
- 提供准生产环境的运行时监控,如:指标、健康的检查、外部的配置
- 无需配置xml,没有冗余的代码产生,即:开箱即用。
二、第一个SpringBoot程序
SpringBoot的版本有许多,目前,SpringBoot最新版本是基于5.0的
1.SpringBoot对运行环境的要求
- SpringBoot2.0 (是基于SpringBoot5.0的)
- 对JDK版本要求必须是1.8以上的版本
- 对Tomcat服务器的要求,必须是8.5版本以上的服务器版本
- Maven版本:3.2以上的版本
- IDEA版本:尽量用最新的版本
2.操作步骤
- 创建一个Maven的Java工程应用
传统的web应用需要创建web工程,后期打包成war包,然后放到tomcat中,比较复杂。而SprinbBoot应用只需要创建Java工程,后期直接打包成jar包,可以被Tomcat直接加载
- 添加依赖文件
- 添加父类POM(spring-boot-starter-parent)
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.5.2</version>
</parent>
- 添加依赖(spring-boot-starter-web)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.2</version>
</dependency>
- 创建业务功能类,如service,ado,controll等
@Controller
public class UserActionImpl {
@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "hello";
}
}
- 编写主程序类
@SpringBootApplication
@ComponentScan("ado.impl")
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
- 注意:
对于业务处理层,控制层等层的扫描,在不用注解指定位置进行扫描时,只能放到主程序类所在包或者他的子包,如果不在这些位置,那么只能用注解 来指定需要扫描包的位置:@ComponentScan(“ado.impl”)
- 部署打包
部署打包,需要添加打包插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.2</version>
</plugin>
3.分析工程(HelloWorld)
3.1依赖包管理
- 父工程:spring-boot-starter-parent;
<!-- TODO:添加spring-boot基础依赖,他基本包含spring所有的基础包 -->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.5.2</version>
</parent>
- 父工程中的父工程:spring-boot-dependencies
spring-boot-dependencies:指定的工程项目中所有的依赖包,及相应的版本
通过starter(启动器)指定相应依赖
<!-- TODO:spring-boot其他一些需要增强的包可以放在dependecies中,下面为web开发时所需包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.2</version>
</dependency>
SpringBoot提供了许多starter(启动器)相应的依赖,分别对应不同的功能场景,当在项目中引入这些stater时,相应场景所需要的依赖就会被导入进来,也就是说,starter依赖包含相应场景的子依赖!
3.2 主配置类注解、配置类注解及
@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}
)}
)
public @interface SpringBootApplication {
重点理解:主配置类、配置类可以看成是一个IOC或AOP容器,主配置类和配置类又是由@SpringBootApplicatoin和SpringBootConfiguratin两个注解决定的,竟能配置其他Bean在里面,那么此类都可以理解为配置类(容器类)
-
@SpringBootApplication
此注解标注在类上,表示这个类是SpringBoot的主配置类(可以理解为:竟然是配置类,那么此类也是一个IOC或AOP容器),通过运行该类的main方法来启动SpringBoot的应用程序。
分析@SpringBootApplication这个注解,在这个注解上面有个@SpringBootConfiguration注解。 -
@SpringBootConfiguration
此注解也是标注在类上面的,表示这个类是SpringBoot的配置类,配置类有很多,但主配置类只有一个:@SpringBootConfiguration。在此注解上面,仍有一个注解:@Configuration. -
@Configuration
标注在类上,表示这个类是Spirng的配置类,相当于一个xml文件 -
@EnableAutoConfiguration
开启自动配置
功能,SpringBoot会自动完成许多配置,简化了以前繁琐的配置。
SpringBoot启动时,会在类路径下META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值做为自动配置类添加到容器中,这些自动配置类
在会帮我们完成行多配置工作。(个人理解:自动配置可以认为是在主配置类(IOC或AOP容器中)自动创建spring.factories文件中所指定的类Bean,让这些指定的类Bean创建在主配置类或其他配置类的容器中。)
-
@ComponentScan
标在类上,指定要扫描的包。
三、快速创建SpringBoot项目
1.简介
- 使用Spring Initializr来快速创建SpringBoot项目,前提是需要连网!
2.基本操作
- POM文件和主程序类都已经生成好了,可以直接写业务逻辑代码
- resource文件夹的目录结构
|-staic 用来存放静态资源,如class,js,image
|-templates 存储模板页面,可以使用模板引擎,如freemarker,thymelerf等
|-application.properties SpringBoot应用的配置文件,可以修改一些默认设置
3.创建流程(图示例)