Spring Boot 几个知识点及原理

238 阅读3分钟

cc65ceb60b4c45f6b39119e3f0705ee2_tplv-k3u1fbpfcp-zoom-in-crop-mark_3024_0_0_0.webp

四个核心:自动配置、起步依赖、命令行界面、Actuator

1. 自动配置

针对Spring应用程序常见的应用功能,Spring boot能自动提供相关配置。在Spring的程序源码里,会需要很多Java配置或XML配置,为实现某功能,需要在Spring应用程序上下文配置相关的Bean,而Spring Boot则是免去了这些通用的配置,如果在应用程序的Classpath里发现某个实例,便会为你自动配置相关的Bean

2. 起步依赖

当需要使用某个功能,需要向项目中添加依赖时,往往需要添加多条,且需要注意它的Group和Artifact是什么,那个版本不会和其他依赖发生冲突。Spring Boot通过起步依赖为项目依赖管理提供帮助。起步依赖就是利用了传递依赖解析,把常用的库聚合在一起,组成几个为特定功能而定制的依赖,是经过测试的,无需担心依赖冲突的问题。如:spring-boot-start-web

3. 命令行界面

Spring Boot CLI利用起步依赖和自动配置,快速搭建应用程序。CLI可以检测到你使用了哪些类,它便知道了要向Classpath中添加那些起步依赖才能使其运行,再添加后,自动配置完成后续操作

4. Actuator

Actuator提供在运行时检视应用程序内部的能力

  1. Spring应用程序上下文配置的Bean
  2. Spring Boot的自动配置做的决策
  3. 应用程序取到的环境变量、系统属性、配置属性和命令行参数
  4. 线程的当前状态
  5. 最近处理过的HTTP请求的追踪情况
  6. 各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标

XxApplication.java 启动引导类、配置类

@SpringBootApplication // 开启组件扫描和自动配置
public class XxApplication{
	public static void main(String[] args){
		// 负责启动引导应用程序
		SpringApplication.run(XxApplication.class,args);
	}
}

1.@SpringBootApplication

开启Spring的组件扫描和SpringBoot的自动配置功能,该注解包含了三个注解 Spring的@Configuration:标明该类使用Spring基于Java的配置 Spring的@ComponentScan:启用组件扫描,这样才能被发现并注册为Spring应用程序上下文里的Bean,使用@Controller进行注解,组件扫描才能找到它 Spring Boot的@EnableAutoConfiguration:开启自动配置

2. 启动引导应用程序

运行SpringBoot应用程序可以通过WAR文件部署,这里的main()方法让你可以在命令行里把应用程序当作一个可以执行JAR文件来运行

Spring Boot项目构建过程使用SpringBoot Maven插件及父起步依赖

pom.xml文件中添加了父起步依赖、起步依赖、Maven插件

父起步依赖:spring-boot-starter-parent 定义了若干依赖管理,继承该模块可以避免多个依赖使用相同技术时造成的版本问题

Maven插件提供了一个spring-boot:run目标,构建插件的主要功能是把项目打包成一个可执行的超级JAR,包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容让你可以用java -jar来运行应用程序

常见的@Controller注解和@RequestMapping注解

@Controller注解添加后,组件扫描会自动将其注册为上下文里的Bean @RequestMapping注解将其中所有的处理器方法都映射到同一个URL路径上

自定义配置

在实际开发中,有许多时候我们会自定义某个组件的配置去替换自动配置自带的配置类。自定义配置类生效的原理是,在自动配置类上有一个@ConditionalOnMissingBean()注解,即要求当前不存在某个类型的Bean时才能生效,SpringBoot的设计时先加载应用级配置,然后再考虑自动配置类