SpringBoot3.0 + RocketMq 构建企业级数据中台[飒爽英姿五尺枪]

179 阅读4分钟

download:SpringBoot3.0 + RocketMq 构建企业级数据中台

前言

本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级分析、内嵌tomcat源码级分析、缓存深化、多环境部署等等,假如能耐烦看完,想必会有不少收获。

一、Spring Boot根底应用

Spring Boot特征

概念:

商定优于配置,简单来说就是你所等待的配置与商定的配置分歧,那么就能够不做任何配置,商定不契合等待时才需求对商定停止交换配置。

特征:

1. SpringBoot Starter:他将常用的依赖分组停止了整合,将其兼并到一个依赖中,这样就能够一次性添加到项目的Maven或Gradle构建中。

2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring停止配置,并且提供了大量的注解,极大的进步了工作效率,比方@Configuration和@bean注解分离,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。

3.自动配置:SpringBoot的自动配置特性应用了Spring对条件化配置的支持,合理地揣测应用所需的bean并自动化配置他们。

4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需求一个Java的运转环境就能够跑SpringBoot的项目了,SpringBoot的项目能够打成一个jar包。

Spring Boot创立

Spring Boot项目构造图:

Spring Boot热部署

经过引入spring-bootdevtools插件,能够完成不重启效劳器状况下,对项目停止即时编译。引入热部署插件的步骤如下:

1. 在pom.xml添加热部署依赖

2. IDEA热部署工具设置

3. 在项目恣意页面中运用组合快捷键“Ctrl+Shift+Alt+/”翻开Maintenance选项框,选中并翻开Registry页面,列表中找到“compiler.automake.allow.when.app.running”,将该选项后的Value值勾选,用于指定IDEA工具在程序运转过程中自动编译,最后单击【Close】按钮完成设置。

热部署原理:

根本原理就是我们在编辑器上启动项目,然后改动相关的代码,然后编辑器自动触发编译,交换掉历史的.class文件后,项目检测到有文件变卦后会重启srpring-boot项目。内部主要是经过引入的插件对我们的classpath资源变化停止监听,当classpath有变化,才会触发重启。

从官方文档能够得知,其实这里对类加载采用了两品种加载器,关于第三方jar包采用baseclassloader来加载,关于开发人员本人开发的代码则运用restartClassLoader来停止加载,这使得比停掉效劳重启要快的多,由于运用插件只是重启开发人员编写的代码局部。

扫除资源:

默许状况下,改动资源 /META-INF/maven , /META-INF/resources , /resources , /static , /public ,或 /templates 不触发重新启动,但确会触发现场重装。假如要自定义这些扫除项,则能够运用该spring.devtools.restart.exclude 属性。例如,仅扫除 /static , /public 在application.properties设置以下属性。

spring.devtools.restart.exclude=static/**,public/**,config/**

全局配置文件优先级

优先级:以下图次第号代表配置文件的优先级,并且相同配置文件按次第加载能够完成互补,但是不会被掩盖。

留意:Spring Boot 有application.properties 和 application.yaml 两种配置文件的方式,yaml是一种JSON超文本格式文件,假如是2.4.0之前版本,优先级properties>yaml;但是假如是2.4.0的版本,优先级yaml>properties。

自定义application.properties 配置文件注入IOC容器

填加相应依赖配置能够完成在自定义配置properties配置提示

@ConfigurationProperties(prefix = "person")注解的作用是将配置文件中以person开头的属性值经过setXX()办法注入到实体类对应属性中。

@Component注解的作用是将当前注入属性值的Person类对象作为Bean组件放到Spring容器中,只要这样才干被@ConfigurationProperties注解停止赋值。

application.yaml配置文件

YAML文件格式是Spring Boot支持的一种JSON超集文件格式,以数据为中心,比properties、xml等更

合适做配置文件.

1.yml和xml相比,少了一些构造化的代码,使数据更直接,了如指掌

2.相比properties文件更简约

3.yaml文件的扩展名能够运用.yml或者.yaml。

4.application.yml文件运用 “key:(空格)value”格式配置属性,运用缩进控制层级关系。

属性注入

假如配置属性是Spring Boot已有属性,例如效劳端口server.port,那么Spring Boot内部会自动扫描并读取这些配置文件中的属性值并掩盖默许属性。

@Configuration:声明一个类作为配置类。

@Bean:声明在办法上,将办法的返回值参加Bean容器。

@Value:属性注入

@ConfigurationProperties(prefix = "jdbc"):批量属性注入。

@PropertySource("classpath:/jdbc.properties")指定外部属性文件,在类上添加。