主题
核心:约定大于配置
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等。
- Thymeleaf:这是Spring Boot默认的模板引擎,它能够很好地与Spring框架集成。Thymeleaf是一个现代的、功能丰富的模板引擎,支持HTML5,XHTML,XML,JavaScript,CSS等。它具有良好的表达式语言,可以轻松地从模型对象中获取数据,并且在开发阶段支持HTML静态检查。
- Freemarker:Freemarker是一个强大的模板引擎,使用基于C-like语法的模板语言。它非常灵活,可以生成任何基于文本的格式,包括HTML、XML、LaTeX、PostScript等。Freemarker的主要优势在于其性能和灵活性,适用于大型项目或需要高性能渲染的场景。
- Mustache:Mustache是一个逻辑less的模板引擎,这意味着它不包含控制结构(如if语句或for循环),而是依赖于数据模型来填充模板。这种设计使得Mustache模板更易于阅读和维护,因为它更接近最终输出的HTML。Mustache非常适合生成简单的HTML页面,或者当数据模型足够复杂以包含所有必要的逻辑时。
在Spring Boot中配置模板引擎非常简单,只需要在pom.xml
中添加相应的依赖,并在application.properties
或application.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规范中的几个核心编程对象:
DriverManager:它是JDBC的入口点,负责加载JDBC驱动并建立与数据库的连接。应用程序通过调用
DriverManager.getConnection()
方法来获取一个Connection
对象。Connection:表示到数据库的一个连接。它是线程不安全的,因此每次数据库操作都需要使用一个新的
Connection
对象。Connection
对象提供了执行SQL语句、管理事务等方法。Statement:用于执行简单的SQL语句。它包括三种类型:
Statement
:用于执行基本的SQL语句。PreparedStatement
:用于执行预编译的SQL语句,可以提高性能,防止SQL注入攻击。CallableStatement
:用于执行存储过程或函数。
ResultSet:表示从数据库查询返回的结果集。它提供了一种在应用程序中遍历、检索数据的方法。
ResultSet
是游标的一种实现,支持向前移动、定位、更新等功能。DatabaseMetaData:提供有关数据库的信息,如表、列、键、索引等元数据。可以通过
Connection.getMetaData()
方法获取。SQLException:所有JDBC异常都继承自
SQLException
。当JDBC操作失败时,会抛出此类或其子类的实例。Driver:JDBC驱动是一个实现了
java.sql.Driver
接口的类,负责处理与特定数据库的通信。DriverManager
会加载这些驱动,并使用它们来创建Connection
对象。Savepoint:表示一个事务中的保存点,允许在该点回滚事务,而不必回滚整个事务。
RowSet:
javax.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如何支持云原生的一些关键点:
微服务架构:Spring Boot天然地支持微服务架构,这与云原生理念中的服务化、模块化和独立部署原则相吻合。Spring Cloud为基于Spring Boot的应用提供了构建微服务架构的一系列工具,包括服务发现、配置中心、熔断器、API网关等。
容器化:云原生强调使用容器技术(如Docker)来打包应用及其依赖,以便在任何环境中实现一致的运行环境。Spring Boot应用可以很容易地被打包成Docker镜像,便于在Kubernetes等容器编排平台上进行部署和管理。
弹性伸缩:云原生应用通常设计为可水平扩展,以应对负载变化。Spring Boot应用可以通过配置健康检查、自动重试、断路器等功能,提高系统的弹性和可用性。
持续集成/持续部署(CI/CD):云原生要求快速迭代和频繁部署,Spring Boot应用可以与Jenkins、GitLab CI等CI/CD工具无缝集成,实现自动化测试和部署。
可观测性:云原生应用需要具备良好的监控、日志和追踪能力,以便于故障排查和性能优化。Spring Boot通过集成Spring Actuator、Prometheus、ELK Stack等工具,提供了丰富的监控指标和日志输出。
无状态设计:为了更好地利用云资源,云原生应用往往设计为无状态或最小状态,这样可以更容易地实现水平扩展和故障恢复。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