文章摘要: spring boot 是一个快速整合框架,利用自动配置原理简化各种配置,比如SSM配置。
重要
前置条件
- ^ Java 8
- Spring Framework 5
相关信息
外部相关文章
内部相关文章
- SpringBoot 2 官方Starter:Library-Maven-SpringBoot2-官方启动器(Starter)
- SpringBoot 2 注解:Library-Maven-SpringBoot2-注解
简介
简化配置
- Spring Boot通过提供一系列的“starter”依赖项来简化配置。
- 这些starters包含了开发特定类型应用所需的所有Spring和相关库的依赖。
- 例如,
spring-boot-starter-web包含了创建Web应用程序所需的所有依赖。- 开发者无需手动添加和管理大量的依赖项。
- Spring Boot 中包含了大量的 starter 启动器,启动器根据使用场景来分类,定义了当前项目使用的所有依赖坐标和版本号,管理依赖关系,整合成一个新的依赖,统一管理,称之为
启动器。spring-boot-starter-<场景>。独立运行
- Spring Boot应用可以打包成一个独立的Java可执行jar包,这个jar包包含了应用的所有依赖项以及嵌入的Web服务器(如Tomcat)。
- 可以通过
java -jar命令直接运行你的应用程序,无需部署到外部的应用服务器。自动配置
- Spring Boot 的自动配置功能会根据添加到项目中的jar依赖自动配置 Spring 框架。
- 例如,如果类路径下存在HSQLDB,并且没有手动配置任何数据库连接 beans,Spring Boot会自动配置内存数据库。
- 自动配置是通过
@EnableAutoConfiguration注解启用的,它会尝试根据添加的jar依赖推断出你想如何配置 Spring。生产就绪特性
- Spring Boot 提供了一系列有助于生产环境的应用特性,如应用监控、度量、健康检查和安全管理。
- 例如,它提供了actuator模块,该模块可以通过HTTP或JMX端点暴露应用程序的内部状态,这对于运维人员监控和管理应用程序非常有用。
无代码生成和XML配置
- Spring Boot 提倡使用Java配置来代替传统的XML配置文件。
- 通过使用
@Configuration和@Bean注解,实现以Java代码的方式配置 Spring 容器。- 无需编写和维护XML配置文件,减少了配置的复杂性。
微服务支持
- Spring Boot非常适合构建微服务架构中的独立服务。
- 它的轻量级和易于部署的特性使得它成为微服务开发的首选框架。
- 结合 Spring Cloud 之后,Spring Boot 可以提供完整的微服务解决方案,包括服务发现、配置管理、负载均衡等。
- 方便构建微服务架构,支持Spring Cloud。
Maven坐标
<!-- 继承父级项目 -->
<parent> <!-- 引入并继承spring boot提供的父级pom.xml -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version></version> <!-- 请自行查找合适版本 -->
</parent>
环境搭建
引导类,在pom.xml中通过<parent></parent>引入springboot的父级项目。解决依赖版本统一管理。
启动器
配置类
Spring Boot 支持基于 Java 的配置。尽管可以将 SpringApplication 与 XML 源一起使用,但我们通常建议主源是单个 @Configuration 类。通常,定义 main 方法的类是主@Configuration的不错候选者。
配置和自动配置原理
配置文件
application.properties配置文件
- 配置文件名称必须是:application.properties
- 存储位置在:scr/main/resources
设置基本信息
# 端口号
server.port=8080
# 项目虚拟路径(web项目名)
server.servlet.context-path=/agent
# 设置懒加载
spring.main.lazy-initialization=true
文件上传
servlet:
multipart:
max-file-size: 100MB # 每个文件大小最大限制
max-request-size: 200MB # 每次传输文件大小最大限制
自定义SpringApplication
后台命令行启动图标
在resources目录下创建banner的图片,或者创建一个banner.txt的文本文件,就能在启动时显示一个以字符构成的图标。
配置文件优先级
文件格式
yml>yaml>properties配置文件。
文件位置
| 配置文件位置 | 说明 | 优先级 |
|---|---|---|
classpath:/ | 资源根路径 | 最低 |
classpath:/config/*/ | 资源根路径下的config目录 | |
classpath:/config/ | 资源根路径下的config目录 | |
file:./ | 项目根路径 | |
file:./config/*/ | ||
file:./config/ | 项目根路径下的config目录 | |
java -jar <项目名>.jar --spring.config.location=<配置文件位置> | 命令行指定文件 | 最大 |
Profile文件的加载
对于应用程序来说,不同的环境需要不同的配置。
外部配置文件读取
springboot启动器的概念
autoconfiguration启动器
启动器的作用:实现模块化和依赖封装
打包成jar包
自定义启动器
有默认的配置文件,写在META-INF目录下、 写个类去读取默认的配置文件,构建spring.factories
- 创建一个模块(父子工程)
- 编写配置文件、配置验证码的一些默认信息
- 写一下实体类,映射配置信息,来存储读取出来的配置信息
- 写业务,写验证码的工具类
- 创建配置类,将验证码工具类加入到ioc容器中
热部署
- 实现在修改代码或配置文件后,能够不需要每次重启使修改生效。
开启热部署
- 引入依赖
<dependency> <!--devtools热部署-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
日志
java日志体系
Web开发
集成MyBatis
启动原理源码
自定义starters
集成中间件
整合第三方技术的方式
- 导入对应的starter
- 根据提供的配置格式,配置非默认值对应的配置项。
IOC容器
AOP面向切面编程
提供了面向切面编程的实现,允许开发者通过分离横切关注点来增加模块化。
在面向对象编程(OOP)中,我们通常通过封装、继承和多态来提高代码的模块化,但有些横切关注点(如日志、事务管理和安全)往往跨越多个模块,这可能导致代码分散和重复。AOP就是为了解决这类问题而设计的。
Spring AOP主要用于处理Spring管理的beans,它不如AspectJ强大,AspectJ是另一种更为通用的AOP实现,它能够处理非Spring托管的类,甚至可以在编译时进行织入。
Resoures资源
Web MVC
Web Clients
定时任务
缓存
spring底层核心原理
spring的Bean生命周期
spring的依赖注入
spring的启动过程
spring的配置类
spring的整合第三方依赖
spring的AOP
spring的事务
博主提示
总结
- 建议将springboot的启动类/配置类,放置在外层,这样在自动扫描包路径时能将全部的对象进行扫描,进行添加bean对象。
更多参考资料请参考:Spring Cloud Alibaba,阿里巴巴提供的教学文档。