默认有spring基础,不会一行代码一行代码那么细致地讲。
SpringBoot的作用
Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的。就像我们整个SSM框架时,就常常会碰到版本导致包名对不上、Bean非法参数类型的一系列问题(原出处链接)。因为一种架构中有很多很多的jar包,而jar包之间的整合(需要导入那些包,有哪些包之间的整合需要额外的jar包[像mybatis-spring]、每种包的版本选择)。
SpringBoot提供了一堆依赖打包Starter,并已经按照使用习惯解决了依赖问题---习惯大于约定。Spring Boot默认使用tomcat作为服务器,使用logback提供日志记录。致力于简洁,让开发者写更少的配置,程序能够更快的运行和启动。
主要特点:
1.为基于Spring的开发提供更快的入门体验
2.开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求
3.提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等
4.SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式
创建项目及注意事项
1.来到项目创建
2.选择
我们左侧选择Springboot
3.在这个页面选择你想要添加的框架,同时SpringBoot版本不建议选太高
之后不同的框架各有个的整合需求,这里只讲SpringBoot本身的使用:
SpringBoot简介
父项目parent
SpringBoot将所有的技术版本的常见使用方案都给开发者整理了出来,以后开发者使用时直接用它提供的版本方案,就不用担心冲突问题了,相当于SpringBoot做了无数个技术版本搭配的列表,这个技术搭配列表的名字叫做parent。简单讲,版本管理这一块springboot-parent会帮我们做好,而使用哪些框架还是我们自己定。
父项目指定使用<parent>标签指定,如果你前面示例的方式,使用构建工具创建springboot项目,工具通常会给你加上。
我们ctrl+鼠标左键点进spring-boot-starter-parent:
可以看到它还继承了个spring-boot-dependencies。我们再同样地点进spring-boot-dependencies,可以看到这里定义了很多版本号。当我们选择了引入的框架之后,就会在这里获取对应的版本号。
starter
SpringBoot关注到实际开发时,开发者对于依赖坐标的使用往往都有一些固定的组合方式,比如使用spring-webmvc就一定要使用spring-web。每次都要固定搭配着写,非常繁琐,而且格式固定。因此,springboot把所有的技术使用的固定搭配格式都给开发出来。用某个技术就不用每次写一堆依赖了,开发者使用的时候直接写上对应的搭配即可。对于这样的固定技术搭配,SpringBoot给它起了个名字叫做starter。
starter:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
原本要写的依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>6.1.18</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.1.18</version>
<scope>compile</scope>
</dependency>
引导类
讲完配置和创建,下面讲运行。目前springboot程序运行的入口就是SpringBoot工程创建时自带的那个类,也就是带有main方法的那个类,运行这个类就可以启动SpringBoot工程。
SpringApplication会执行以下步骤:
1.推断应用的类型是普通的项目还是Web项目
2.查找并加载所有可用初始化器,设置到initializers属性中
3.找出所有的应用程序监听器,设置到listener属性中
4.推断并设置main方法的定义类,找到运行的主类
注解
在我们的启动类上面有这个注解@SpringBootApplication,这个注解继承了@EnableAutoConfiguration注解和@ComponentScan:
@SpringBootApplication是springboot2开始才有的注解,在springboot1使用的是原始的@EnableAutoConfiguration注解和@ComponentScan注解。
无论使用@EnableAutoConfiguration注解和@ComponentScan还是使用@SpringBootApplication,其目的都是为了快速配置启动类。
也就是@SpringBootApplication是一个复合注解。现在我们来看原始的注解,每个注解都做了些什么。
@SpringBootConfiguration
我们看源码:
可以看到@Configuration。在Spring项目中,我们的配置类就是使用该注解,用于生成IOC容器。
@EnableAutoConfiguration
@EnableAutoConfiguration 注解启用自动配置,其可以帮助 SpringBoot 应用将所有符合条件的 @Configuration 配置都加载到当前 IoC 容器之中。
简单描述,该注解的作用就是从 指定的配置文件,并将文件中的 EnableAutoConfiguration 对应的配置项,通过反射机制,实例化为对应标注了 @Configuration 的形式的IoC容器配置类,然后注入IoC容器。
@ComponentScan
@ComponentScan 对应于XML配置形式中的 <context:component-scan>,用于将一些标注了特定注解的bean定义批量采集注册到Spring的IoC容器之中,这些特定的注解大致有:@Controller、@Component、@Service、@Repository。