Skip to content

核心:约定大于配置

5板斧

1.pom文件导入依赖;

2.设置配置文件;

3.定义启动类;

4.定义控制器;

5.启动项目Starters是一组资源依赖描述,解决了各个jar包之间的依赖关系。

SpringBoot系列

1、入门:创建项目、引入依赖,https://t.zsxq.com/eeHNp

2、一文讲透Starter:9类Starter、自定义Starter,https://t.zsxq.com/iQr47

3、启动流程剖析https://t.zsxq.com/cDI1U

2、配置管理

在 Spring Boot 中,其核心设计理念是对配置信息的管理采用约定优于配置

  • 把 Spring 中基于 XML 的功能配置方式转换为 Java Config
  • 提供了 .yml 文件来优化原有基于 .properties 和 .xml 文件的配置方案,.yml 文件对配置信息的组织更为直观方便,语义也更为强大。
  • 基于 Spring Boot 的自动配置特性,对常见的各种工具和框架均提供了默认的 starter 组件来简化配置

其精髓: 帮我们配置了什么,能不能改,能修改哪些配置,能不能扩展等

xxxxAutoConfiguration帮我们给容器中自动配置组件

xxxxProperties配置类来封装配置文件的内容

比如覆写Spring Security 中 WebSecurityConfigurerAdapter.configure() 的方法来完成自定义的用户认证配置工作

配置管理层系列-自动配置原理:https://t.zsxq.com/DOLu3

配置管理层系列-自动配置报告:https://t.zsxq.com/DzkM7

配置管理层系列-配置管理注意点:https://t.zsxq.com/7XEsD

配置管理层系列-循环依赖:https://t.zsxq.com/92cam

配置管理层系列-核心配置文件:https://t.zsxq.com/0jbnU

配置管理层系列-配置文件的加载顺序:https://t.zsxq.com/zXBDW

配置管理层系列-排除某些自动配置:https://t.zsxq.com/aPiQc

配置管理层系列-条件注解:https://t.zsxq.com/C4R13

配置管理层系列-AutoConfigurationImportSelector:https://t.zsxq.com/GEaLj

配置管理层系列-bootstrap与application的区别:https://t.zsxq.com/nekoY

配置管理层系列-ConditionalOn:https://t.zsxq.com/olDeE

配置管理层系列-SpringBootApplication注解 : https://t.zsxq.com/dvsVA

配置管理层系列-ConfigurationProperties:https://t.zsxq.com/M3AGR

配置管理层系列-@Primary和@Qualifier的区别:https://t.zsxq.com/AC1oA

配置管理层系列-Bean的作用域并测试:https://t.zsxq.com/gETlE

配置管理层系列-Import注解的4种方式:https://t.zsxq.com/lF5TA

配置管理层系列-Profile:https://t.zsxq.com/XAtdz

配置管理层系列-PropertySources:https://t.zsxq.com/TxaqL

配置管理层系列-Runner:https://t.zsxq.com/kMDlD

配置管理层系列-配置https:https://t.zsxq.com/FtLUf

配置管理层系列-同时支持HTTP和HTTPS:https://t.zsxq.com/9YsPs

配置管理层系列-SPI机制:https://t.zsxq.com/LoXYF

配置管理层系列-表达式语言SpEL:https://t.zsxq.com/C7sOE

3、web层

1、核心组件

Handler、HandlerMapping、HandlerAdapter

Handler是用来做具体事情的,对应的是Controller里面的方法。所有有@RequestMapping的方法都可以被看作一个Handler。

HandlerMapping是用来找到Handler的,是请求路径与Handler的映射关系

HandlerAdapter是一个适配器。它是用来跟具体的Handler配合使用的。

DispatcherServlet最核心的方法是doDispatch,主要做了4件事:

根据请求找到Handler -> 根据Handler找到对应的HandlerAdapter -> 用HandlerAdapter处理Handler -> 处理经过以上步骤的结果

2、模版引擎

模板引擎是一种将数据和模板结合生成可读文档的工具。在Web开发中,模板引擎主要用于动态生成HTML页面,但也可以用于生成XML、JSON或其他格式的文本文件。Spring Boot支持多种模板引擎,如Thymeleaf、Freemarker、Mustache等。

  1. Thymeleaf:这是Spring Boot默认的模板引擎,它能够很好地与Spring框架集成。Thymeleaf是一个现代的、功能丰富的模板引擎,支持HTML5,XHTML,XML,JavaScript,CSS等。它具有良好的表达式语言,可以轻松地从模型对象中获取数据,并且在开发阶段支持HTML静态检查。
  2. Freemarker:Freemarker是一个强大的模板引擎,使用基于C-like语法的模板语言。它非常灵活,可以生成任何基于文本的格式,包括HTML、XML、LaTeX、PostScript等。Freemarker的主要优势在于其性能和灵活性,适用于大型项目或需要高性能渲染的场景。
  3. Mustache:Mustache是一个逻辑less的模板引擎,这意味着它不包含控制结构(如if语句或for循环),而是依赖于数据模型来填充模板。这种设计使得Mustache模板更易于阅读和维护,因为它更接近最终输出的HTML。Mustache非常适合生成简单的HTML页面,或者当数据模型足够复杂以包含所有必要的逻辑时。

在Spring Boot中配置模板引擎非常简单,只需要在pom.xml中添加相应的依赖,并在application.propertiesapplication.yml中设置一些基本的配置即可。例如,对于Thymeleaf,你可以这样配置:

xml
<!-- pom.xml -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
properties
# application.properties
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5

每种模板引擎都有其特点和适用场景,选择哪种取决于你的具体需求。例如,如果你正在构建一个需要高度动态内容的网站,Thymeleaf可能是一个更好的选择。而如果你需要一个高性能的解决方案,Freemarker可能是更好的选择。如果项目较小,或者你想要一个简单、直观的模板系统,那么Mustache可能是一个不错的选择。

Web层系列-集成FreeMarker:https://t.zsxq.com/oZDk8

Web层系列-注册Servlet:https://t.zsxq.com/X8wDb

Web层系列-内嵌Web容器:https://t.zsxq.com/y41DS

Web层系列-构建RESTful风格的Web服务:https://t.zsxq.com/8Ng2Q

Web层系列-Jackson中对null的处理:https://t.zsxq.com/muMfT

Web层系列-接口文档:https://t.zsxq.com/Admy1

Web层系列-跨域问题:https://t.zsxq.com/aKW5s

Web层系列-RestTemplate使用方法:https://t.zsxq.com/DKNOs

Web层系列-RestTemplate远程调用实现原理:https://t.zsxq.com/TMOFM

4、数据访问层

0、JDBC规范中的核心编程对象

JDBC(Java Database Connectivity)规范定义了一系列的接口和类,用于在Java应用程序中访问关系型数据库。以下是JDBC规范中的几个核心编程对象:

  1. DriverManager:它是JDBC的入口点,负责加载JDBC驱动并建立与数据库的连接。应用程序通过调用DriverManager.getConnection()方法来获取一个Connection对象。

  2. Connection:表示到数据库的一个连接。它是线程不安全的,因此每次数据库操作都需要使用一个新的Connection对象。Connection对象提供了执行SQL语句、管理事务等方法。

  3. Statement:用于执行简单的SQL语句。它包括三种类型:

    • Statement:用于执行基本的SQL语句。
    • PreparedStatement:用于执行预编译的SQL语句,可以提高性能,防止SQL注入攻击。
    • CallableStatement:用于执行存储过程或函数。
  4. ResultSet:表示从数据库查询返回的结果集。它提供了一种在应用程序中遍历、检索数据的方法。ResultSet是游标的一种实现,支持向前移动、定位、更新等功能。

  5. DatabaseMetaData:提供有关数据库的信息,如表、列、键、索引等元数据。可以通过Connection.getMetaData()方法获取。

  6. SQLException:所有JDBC异常都继承自SQLException。当JDBC操作失败时,会抛出此类或其子类的实例。

  7. Driver:JDBC驱动是一个实现了java.sql.Driver接口的类,负责处理与特定数据库的通信。DriverManager会加载这些驱动,并使用它们来创建Connection对象。

  8. Savepoint:表示一个事务中的保存点,允许在该点回滚事务,而不必回滚整个事务。

  9. RowSetjavax.sql.RowSet接口提供了一个独立于连接的、可更新的ResultSet。它可以在断开与数据库的连接后继续操作结果集。

通过这些核心对象,JDBC为Java开发者提供了一套标准的API,用于执行各种数据库操作,如查询、更新、插入、删除等。

SpringBoot数据访问层系列-集成RSocket:https://t.zsxq.com/HSDml

SpringBoot数据访问层系列-集成WebSocket:https://t.zsxq.com/7SIDF

SpringBoot数据访问层系列-使用ElasticSearch:https://t.zsxq.com/AHie9

SpringBoot数据访问层系列-使用Kafka:https://t.zsxq.com/zhDwK

SpringBoot数据访问层系列-使用Mongodb:https://t.zsxq.com/kMmku

SpringBoot数据访问层系列-使用RabbitMQ:https://t.zsxq.com/roBSf

SpringBoot数据访问层系列-SpringData对数据访问过程进行统一抽象:https://t.zsxq.com/vLfbr

SpringBoot数据访问层系列-Mybatis是什么及配置方法:https://t.zsxq.com/8gqGh

SpringBoot数据访问层系列-集成RedisTemplate实现缓存操作:https://t.zsxq.com/1dGXp

SpringBoot数据访问层系列-JdbcTemplate源码解析:https://t.zsxq.com/dLT4s

访问关系型数据库

SpringBoot数据访问层系列-使用SpringDataJPA访问关系型数据库:https://t.zsxq.com/uQeFV

SpringBoot数据访问层系列-集成Cassandra:https://t.zsxq.com/jBfdd

SpringBoot数据访问层系列-Cassandra的数据读取流程:https://t.zsxq.com/mDiFm

SpringBoot数据访问层系列-Cassandra的数据副本策略:https://t.zsxq.com/QvbIg

SpringBoot数据访问层系列-Cassandra的数据模型与使用方法:https://t.zsxq.com/MjyeQ

SpringBoot数据访问层系列-Cassandra的数据删除机制:https://t.zsxq.com/z0DHK

SpringBoot数据访问层系列-Cassandra的数据写入流程:https://t.zsxq.com/kwr2p

SpringBoot数据访问层系列-Cassandra的原理:https://t.zsxq.com/KQmLG

SpringBoot数据访问层系列-Cassandra中的Gossip协议:https://t.zsxq.com/bp34s

SpringBoot数据访问层系列-Cassandra中虚拟节点设计:https://t.zsxq.com/Ohqfs

5、安全层

安全层系列-Spring安全体系的整体架构:https://t.zsxq.com/9izGX

安全层系列-SpringSecurity中的过滤器链:https://t.zsxq.com/oZr8v

安全层系列-SpringSecurity中的核心类:https://t.zsxq.com/rplpP

安全层系列-基于SpringSecurity构建用户认证体系:https://t.zsxq.com/9Jcml

安全层系列-基于SpringSecurity确保请求安全访问:https://t.zsxq.com/hswaY

安全层系列-使用SpringSecurity实现基于表单的认证和授权:https://t.zsxq.com/Hg1gf

安全层系列-actuator:https://t.zsxq.com/y7K2B

自定义健康状态指示器、使用Actuator将日志量调大 、自定义度量指标、自定义 Actuator 端点

安全层系列-使用AdminServer管理Spring应用程序:https://t.zsxq.com/OFTwk

管理Spring应用程序、使用AdminServer监控系统

6、消息队列

消息队列系列-使用RabbitTemplate集成RabbitMQ:https://t.zsxq.com/5CPkO

消息队列系列-使用Kafka Template集成Kafka:https://t.zsxq.com/i89b3

消息队列系列-使用JmsTemplate集成ActiveMQ:https://t.zsxq.com/4aZct

7、DevOps

云原生是一种构建和运行应用程序的方法论,旨在利用云计算的弹性、可扩展性和服务导向特性。

以下是Spring Boot如何支持云原生的一些关键点:

  1. 微服务架构:Spring Boot天然地支持微服务架构,这与云原生理念中的服务化、模块化和独立部署原则相吻合。Spring Cloud为基于Spring Boot的应用提供了构建微服务架构的一系列工具,包括服务发现、配置中心、熔断器、API网关等。

  2. 容器化:云原生强调使用容器技术(如Docker)来打包应用及其依赖,以便在任何环境中实现一致的运行环境。Spring Boot应用可以很容易地被打包成Docker镜像,便于在Kubernetes等容器编排平台上进行部署和管理。

  3. 弹性伸缩:云原生应用通常设计为可水平扩展,以应对负载变化。Spring Boot应用可以通过配置健康检查、自动重试、断路器等功能,提高系统的弹性和可用性。

  4. 持续集成/持续部署(CI/CD):云原生要求快速迭代和频繁部署,Spring Boot应用可以与Jenkins、GitLab CI等CI/CD工具无缝集成,实现自动化测试和部署。

  5. 可观测性:云原生应用需要具备良好的监控、日志和追踪能力,以便于故障排查和性能优化。Spring Boot通过集成Spring Actuator、Prometheus、ELK Stack等工具,提供了丰富的监控指标和日志输出。

  6. 无状态设计:为了更好地利用云资源,云原生应用往往设计为无状态或最小状态,这样可以更容易地实现水平扩展和故障恢复。Spring Boot应用可以通过数据库、缓存等外部存储服务来管理状态,保持自身轻量级。

DevOps系列-组件集成:https://t.zsxq.com/Gb0EG

DevOps系列-7种运行方式:https://t.zsxq.com/TDn58

DevOps系列-3种打包方式:https://t.zsxq.com/Y8Stw

DevOps系列-热更新与热部署方式:https://t.zsxq.com/hLkkk

DevOps系列-SpringBoot中的日志:https://t.zsxq.com/nLDJT

日志级别、切换框架、文件输出、归档

8、Test

测试系列-单元测试:https://t.zsxq.com/c48gh

测试系列-MockMVC:https://t.zsxq.com/wxWWT

测试系列-Swagger2:https://t.zsxq.com/nZg3o

SpringBoot3

SpringBoot3-简介与新特性:https://t.zsxq.com/6V2JM

SpringBoot3-版本迁移:https://t.zsxq.com/pzZMt