📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域优质创作者、优快云博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。
📘拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RocketMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。
📙不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。

💡在这个美好的时刻,笔者不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

在Spring框架中,核心容器是其最基础的部分,它负责管理应用程序中的对象,即Bean。Spring容器通过IoC(控制反转)和DI(依赖注入)的概念,实现了对Bean的创建、配置和管理。
IoC与DI
IoC是一种设计模式,它将对象的创建和依赖关系的配置从对象内部转移到外部容器。在Spring中,IoC容器负责实例化Bean,并设置它们的依赖关系。这种做法使得对象之间的耦合度降低,提高了代码的可维护性和可测试性。
DI是IoC的一种实现方式,它允许对象通过构造函数、设值方法或接口注入依赖。在Spring中,可以通过XML配置、注解或Java配置来定义Bean的依赖关系。
Bean生命周期管理
Spring容器负责管理Bean的生命周期,包括创建、初始化、使用和销毁。Spring提供了多种方式来管理Bean的生命周期,例如:
- 初始化方法:在Bean创建后,可以调用一个初始化方法来执行一些初始化操作。
- 销毁方法:当Bean不再需要时,可以调用一个销毁方法来执行一些清理操作。
- 生命周期回调接口:Spring提供了
InitializingBean和DisposableBean接口,允许Bean在生命周期中的特定阶段执行自定义操作。
Bean作用域
Spring支持多种Bean作用域,包括:
- Singleton:每个Spring容器中只有一个Bean实例。
- Prototype:每次请求时创建一个新的Bean实例。
- Request:每个HTTP请求创建一个新的Bean实例。
- Session:每个HTTP会话创建一个新的Bean实例。
BeanFactory与ApplicationContext
Spring提供了两种容器类型:BeanFactory和ApplicationContext。
- BeanFactory:它是Spring容器的底层实现,负责实例化Bean和解析配置。
- ApplicationContext:它是BeanFactory的子接口,提供了更多高级功能,例如事件发布、国际化支持和加载文件资源。
注解驱动开发
Spring提供了许多注解来简化配置和开发过程,例如:
- @Component:用于声明一个Bean。
- @Service:用于声明一个业务层Bean。
- @Repository:用于声明一个数据访问层Bean。
- @Autowired:用于自动注入依赖。
Java配置
Spring允许使用Java代码来配置Bean,而不是使用XML配置。这可以通过@Configuration注解和@Bean方法来实现。
XML配置驱动
Spring也支持使用XML文件来配置Bean。这可以通过<bean>标签和相关的属性来实现。
SpEL(Spring表达式语言)
SpEL是Spring提供的一种表达式语言,它可以用于在运行时动态地访问和操作对象。SpEL可以用于设置Bean的属性、执行计算和访问集合等。
在Spring框架中,AOP(面向切面编程)是一种强大的特性,它允许将横切关注点(如日志记录、事务管理)与业务逻辑分离。
AOP核心概念
- 切面(Aspect):它是一个模块,包含了一组通知和切点。
- 连接点(Join Point):它是程序执行中的一个特定点,例如方法执行、字段访问等。
- 通知(Advice):它是切面中的代码片段,用于在连接点执行特定的操作,例如
@Before、@After、@Around、@AfterThrowing和@AfterReturning。 - 切点(Pointcut):它定义了哪些连接点应该被通知所关注。
- 引入(Introduction):它允许在运行时向现有类添加新的方法和属性。
- 织入(Weaving):它是将切面应用到目标对象的过程。
@AspectJ注解支持
Spring支持使用@AspectJ注解来定义切面。@AspectJ注解提供了简洁的方式来定义切面、通知和切点。
在Spring框架中,数据访问与集成是另一个重要的方面,它提供了对各种数据访问技术的支持。
JDBC抽象
Spring提供了JdbcTemplate,它是一个JDBC操作的抽象层,简化了数据库操作。
事务管理
Spring提供了声明式事务管理和编程式事务管理。声明式事务管理通过@Transactional注解来实现,而编程式事务管理则需要使用TransactionTemplate或PlatformTransactionManager。
事务传播机制
Spring提供了多种事务传播机制,例如PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW、PROPAGATION_NESTED等。
事务隔离级别
Spring支持多种事务隔离级别,例如ISOLATION_READ_UNCOMMITTED、ISOLATION_READ_COMMITTED、ISOLATION_REPEATABLE_READ和ISOLATION_SERIALIZABLE。
DAO支持
Spring提供了对DAO(数据访问对象)的支持,包括JdbcDaoSupport和SqlSessionTemplate。
ORM集成
Spring支持多种ORM(对象关系映射)技术,例如Hibernate、JPA和MyBatis。
Spring Data
Spring Data提供了一组数据访问抽象,包括JPA、MongoDB和Redis等。
在Spring框架中,Web与MVC是用于开发Web应用程序的关键组件。
DispatcherServlet
DispatcherServlet是Spring MVC的前端控制器,它负责接收HTTP请求并调用相应的处理器。
控制器
Spring MVC提供了多种控制器类型,例如@Controller和@RestController。
请求映射
Spring MVC使用@RequestMapping、@GetMapping和@PostMapping等注解来映射HTTP请求。
视图解析
Spring MVC使用ViewResolver来解析逻辑视图名并渲染视图。
数据绑定
Spring MVC使用@RequestParam、@PathVariable和@RequestBody等注解来绑定请求参数。
返回处理
Spring MVC使用@ResponseBody和ResponseEntity来处理返回值。
文件上传
Spring MVC使用MultipartFile来处理文件上传。
拦截器
Spring MVC使用HandlerInterceptor来拦截请求和响应。
异常处理
Spring MVC使用@ControllerAdvice和@ExceptionHandler来处理异常。
Spring WebFlux
Spring WebFlux是Spring MVC的响应式版本,它使用非阻塞的异步编程模型。
在Spring Boot中,自动配置是其核心特性之一。
自动配置
Spring Boot通过@EnableAutoConfiguration注解和spring.factories文件来实现自动配置。
起步依赖
Spring Boot提供了许多Starter POMs,它们包含了一组相关的依赖项。
嵌入式容器
Spring Boot支持多种嵌入式容器,例如Tomcat、Jetty和Undertow。
配置文件
Spring Boot使用application.properties和application.yml文件来配置应用程序。
Profile多环境配置
Spring Boot支持多环境配置,允许根据不同的环境(开发、测试、生产)使用不同的配置。
Actuator
Spring Boot Actuator提供了应用监控功能,例如健康检查、Metrics监控等。
Spring Boot CLI
Spring Boot CLI允许使用命令行来启动和运行Spring Boot应用程序。
在Spring Cloud中,微服务组件是用于构建分布式系统的关键组件。
服务注册与发现
Spring Cloud提供了Eureka、Nacos、Consul和Zookeeper等服务注册与发现组件。
负载均衡
Spring Cloud提供了Ribbon和Spring Cloud LoadBalancer等负载均衡组件。
服务调用
Spring Cloud提供了OpenFeign和RestTemplate等服务调用组件。
熔断器
Spring Cloud提供了Hystrix和Resilience4j等熔断器组件。
网关
Spring Cloud提供了Zuul和Spring Cloud Gateway等网关组件。
配置中心
Spring Cloud提供了Spring Cloud Config和Nacos Config等配置中心组件。
消息总线
Spring Cloud提供了Spring Cloud Bus等消息总线组件。
链路追踪
Spring Cloud提供了Sleuth和Zipkin等链路追踪组件。
分布式事务
Spring Cloud提供了Seata等分布式事务组件。
在Spring Security中,安全是关键概念。
身份认证
Spring Security提供了身份认证功能,包括表单登录、OAuth2协议支持和JWT(JSON Web Token)。
授权
Spring Security提供了授权功能,包括方法级安全(@PreAuthorize)。
表单登录与注销
Spring Security支持表单登录和注销功能。
OAuth2协议支持
Spring Security支持OAuth2协议,包括授权服务器和资源服务器。
JWT
Spring Security支持JWT,允许使用JWT进行身份认证和授权。
在Spring框架中,设计模式的应用是提高代码可维护性和可扩展性的关键。
工厂模式
Spring框架使用工厂模式来创建和管理Bean。
单例模式
Spring框架使用单例模式来确保每个Bean只有一个实例。
代理模式
Spring框架使用代理模式来实现AOP。
模板方法
Spring框架使用模板方法模式来实现JdbcTemplate和RestTemplate。
观察者模式
Spring框架使用观察者模式来实现ApplicationEvent。
适配器模式
Spring框架使用适配器模式来实现HandlerAdapter。
在Spring框架中,其他关键模块提供了额外的功能。
Spring Messaging
Spring Messaging提供了JMS集成功能。
Spring Integration
Spring Integration提供了企业集成模式功能。
Spring Batch
Spring Batch提供了批处理功能。
Spring Session
Spring Session提供了分布式会话管理功能。
Spring Cache
Spring Cache提供了缓存抽象功能,例如@Cacheable。
在JVM(Java虚拟机)中,核心知识点是构建Java应用程序的基础。
JVM基础架构
JVM由类加载子系统、运行时数据区、执行引擎和本地方法接口组成。
内存模型与管理
JVM的内存模型包括堆、方法区、虚拟机栈、本地方法栈和程序计数器。
垃圾回收机制
JVM使用垃圾回收机制来管理内存,包括标记-清除、复制、标记-整理和分代收集算法。
类加载机制
JVM使用类加载机制来加载类,包括加载、链接和初始化过程。
性能监控与调优
JVM提供了各种工具来监控和调优性能,例如jps、jstat、jmap、jstack和VisualVM。
在Spring Boot中,核心机制是构建和运行Spring应用程序的关键。
自动配置原理
Spring Boot使用@EnableAutoConfiguration注解和spring.factories文件来实现自动配置。
起步依赖
Spring Boot提供了Starter POMs,它们包含了一组相关的依赖项。
嵌入式容器
Spring Boot支持多种嵌入式容器,例如Tomcat、Jetty和Undertow。
配置文件
Spring Boot使用application.properties和application.yml文件来配置应用程序。
Profile多环境配置
Spring Boot支持多环境配置,允许根据不同的环境(开发、测试、生产)使用不同的配置。
Actuator
Spring Boot Actuator提供了应用监控功能,例如健康检查、Metrics监控等。
Spring Boot CLI
Spring Boot CLI允许使用命令行来启动和运行Spring Boot应用程序。
在JVM与Spring Boot的关联中,JVM参数调优对Spring Boot性能有重要影响。
JVM参数调优
JVM参数调优包括堆内存设置、GC策略选择等。
类加载机制与Spring Boot自动配置
类加载机制与Spring Boot自动配置有关,例如SPI机制扩展。
内存泄漏排查
内存泄漏排查与Spring Bean生命周期和JVM堆分析有关。
在Spring MVC中,基础架构组件是构建Web应用程序的关键。
DispatcherServlet
DispatcherServlet是Spring MVC的前端控制器,它负责接收HTTP请求并调用相应的处理器。
HandlerMapping
HandlerMapping负责将HTTP请求映射到处理器方法。
HandlerAdapter
HandlerAdapter负责执行目标方法。
ViewResolver
ViewResolver负责解析逻辑视图名并渲染视图。
HandlerInterceptor
HandlerInterceptor负责拦截请求和响应。
在Spring MVC中,注解驱动开发提供了简洁的方式来配置和开发Web应用程序。
@Controller / @RestController
@Controller和@RestController用于声明控制器。
@RequestMapping / @GetMapping / @PostMapping
@RequestMapping、@GetMapping和@PostMapping用于映射HTTP请求。
@RequestParam / @PathVariable / @RequestBody
@RequestParam、@PathVariable和@RequestBody用于绑定请求参数。
@ResponseBody / ResponseEntity
@ResponseBody和ResponseEntity用于处理返回值。
@ModelAttribute / @SessionAttribute
@ModelAttribute和@SessionAttribute用于绑定模型属性和会话属性。
在Spring MVC中,请求处理流程包括客户端请求、处理器方法执行和视图渲染。
客户端请求
客户端请求进入DispatcherServlet。
处理器方法执行
HandlerMapping匹配控制器方法,HandlerAdapter执行目标方法。
视图解析
ViewResolver解析逻辑视图名并渲染视图。
在Spring MVC中,数据绑定与验证是处理请求参数和验证数据的关键。
数据绑定
数据绑定将表单对象自动填充到模型中。
类型转换器
类型转换器将请求参数转换为Java对象。
校验框架
校验框架使用@Valid和Hibernate Validator来验证数据。
在Spring MVC中,视图技术用于渲染HTML页面。
JSP / Thymeleaf / FreeMarker
JSP、Thymeleaf和FreeMarker是常用的视图技术。
JSON序列化
JSON序列化使用Jackson和Gson来将Java对象转换为JSON字符串。
XML处理
XML处理使用JAXB和XStream来将Java对象转换为XML字符串。
在Spring MVC中,文件与异常处理是处理文件上传和异常的关键。
文件上传
文件上传使用MultipartFile来处理文件上传。
全局异常处理
全局异常处理使用@ControllerAdvice和@ExceptionHandler来处理异常。
HTTP状态码控制
HTTP状态码控制使用@ResponseStatus来设置HTTP状态码。
在Spring MVC中,RESTful支持是构建RESTful API的关键。
HTTP方法映射
HTTP方法映射将HTTP方法映射到控制器方法。
HATEOAS
HATEOAS使用超媒体驱动API来提供链接信息。
内容协商
内容协商使用Accept头匹配来处理不同媒体类型。
在Spring MVC中,异步处理是处理长时间运行的任务的关键。
@Async
@Async用于异步方法调用。
DeferredResult / Callable
DeferredResult和Callable用于非阻塞响应。
SSE(Server-Sent Events)
SSE用于服务器推送事件。
在Spring MVC中,国际化与静态资源是处理多语言支持和静态资源映射的关键。
LocaleResolver
LocaleResolver用于多语言支持。
静态资源映射
静态资源映射使用ResourceHandlerRegistry来映射静态资源。
缓存控制
缓存控制使用Cache-Control头配置来控制缓存行为。
在Spring MVC中,测试支持是确保应用程序质量的关键。
MockMvc
MockMvc用于控制器单元测试。
TestContext 框架
TestContext框架用于集成测试。
在Spring Cloud中,服务注册与发现是构建分布式系统的关键。
Eureka
Eureka是Spring Cloud提供的服务注册与发现组件。
Nacos
Nacos是Spring Cloud提供的服务注册与发现组件。
Consul
Consul是Spring Cloud提供的服务注册与发现组件。
Zookeeper
Zookeeper是Spring Cloud提供的服务注册与发现组件。
在Spring Cloud中,服务调用与负载均衡是确保服务可用性和性能的关键。
Ribbon
Ribbon是Spring Cloud提供的客户端负载均衡组件。
Spring Cloud LoadBalancer
Spring Cloud LoadBalancer是Spring Cloud提供的客户端负载均衡组件。
OpenFeign
OpenFeign是Spring Cloud提供的声明式REST客户端组件。
RestTemplate
RestTemplate是Spring Cloud提供的REST客户端组件。
在Spring Cloud中,服务容错与熔断是确保系统稳定性的关键。
Hystrix
Hystrix是Spring Cloud提供的熔断器组件。
Resilience4j
Resilience4j是Spring Cloud提供的熔断器组件。
Sentinel
Sentinel是Spring Cloud提供的熔断器组件。
在Spring Cloud中,网关与路由是构建API网关的关键。
Spring Cloud Gateway
Spring Cloud Gateway是Spring Cloud提供的网关组件。
Zuul
Zuul是Spring Cloud提供的网关组件。
API路由规则
API路由规则定义了如何路由请求到不同的服务。
过滤器链
过滤器链定义了请求处理过程中的过滤器顺序。
在Spring Cloud中,分布式配置中心是集中管理配置的关键。
Spring Cloud Config
Spring Cloud Config是Spring Cloud提供的配置中心组件。
Nacos Config
Nacos Config是Spring Cloud提供的配置中心组件。
Apollo
Apollo是Spring Cloud提供的配置中心组件。
在Spring Cloud中,消息总线与事件驱动是处理事件和消息的关键。
Spring Cloud Bus
Spring Cloud Bus是Spring Cloud提供的事件驱动组件。
Spring Cloud Stream
Spring Cloud Stream是Spring Cloud提供的事件驱动组件。
在Spring Cloud中,分布式链路追踪是跟踪请求在分布式系统中的路径的关键。
Sleuth
Sleuth是Spring Cloud提供的链路追踪组件。
Zipkin
Zipkin是Spring Cloud提供的链路追踪组件。
SkyWalking
SkyWalking是Spring Cloud提供的链路追踪组件。
在Spring Cloud中,分布式事务是确保数据一致性的关键。
Seata
Seata是Spring Cloud提供的分布式事务组件。
在Spring Cloud中,安全与认证是保护应用程序的关键。
Spring Cloud Security
Spring Cloud Security是Spring Cloud提供的安全组件。
OAuth2
OAuth2是Spring Cloud提供的认证和授权协议。
JWT
JWT是Spring Cloud提供的认证和授权协议。
在Spring Cloud中,监控与管理是确保系统稳定性和性能的关键。
Spring Boot Actuator
Spring Boot Actuator是Spring Boot提供的应用监控组件。
Admin Server
Admin Server是Spring Cloud提供的监控和管理组件。
Prometheus + Grafana
Prometheus和Grafana是Spring Cloud提供的监控和可视化工具。
在Spring Cloud中,其他生态组件提供了额外的功能。
Spring Cloud Function
Spring Cloud Function是Spring Cloud提供的无服务器架构组件。
Spring Cloud Kubernetes
Spring Cloud Kubernetes是Spring Cloud提供的Kubernetes集成组件。
Spring Cloud Task
Spring Cloud Task是Spring Cloud提供的短任务调度组件。
在并发编程中,线程基础是构建并发应用程序的关键。
线程生命周期
线程生命周期包括新建、就绪、运行、阻塞和终止状态。
线程创建方式
线程创建方式包括继承Thread、实现Runnable/Callable和使用线程池。
线程优先级
线程优先级可以使用setPriority方法设置。
守护线程
守护线程可以使用setDaemon方法设置。
在并发编程中,线程同步与锁是确保线程安全的关键。
synchronized
synchronized关键字可以用于方法同步和代码块同步。
volatile
volatile关键字可以用于保证变量的可见性和禁止指令重排。
Lock接口
Lock接口及其实现类(如ReentrantLock和ReadWriteLock)可以用于实现锁

博主分享
📥博主的人生感悟和目标

📙经过多年在优快云创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续出版。
- 《Java项目实战—深入理解大型互联网企业通用技术》基础篇的购书链接:https://item.jd.com/14152451.html
- 《Java项目实战—深入理解大型互联网企业通用技术》基础篇繁体字的购书链接:http://product.dangdang.com/11821397208.html
- 《Java项目实战—深入理解大型互联网企业通用技术》进阶篇的购书链接:https://item.jd.com/14616418.html
- 《Java项目实战—深入理解大型互联网企业通用技术》架构篇待上架
- 《解密程序员的思维密码--沟通、演讲、思考的实践》购书链接:https://item.jd.com/15096040.html
面试备战资料
八股文备战
| 场景 | 描述 | 链接 |
|---|---|---|
| 时间充裕(25万字) | Java知识点大全(高频面试题) | Java知识点大全 |
| 时间紧急(15万字) | Java高级开发高频面试题 | Java高级开发高频面试题 |
理论知识专题(图文并茂,字数过万)
| 技术栈 | 链接 |
|---|---|
| RocketMQ | RocketMQ详解 |
| Kafka | Kafka详解 |
| RabbitMQ | RabbitMQ详解 |
| MongoDB | MongoDB详解 |
| ElasticSearch | ElasticSearch详解 |
| Zookeeper | Zookeeper详解 |
| Redis | Redis详解 |
| MySQL | MySQL详解 |
| JVM | JVM详解 |
集群部署(图文并茂,字数过万)
| 技术栈 | 部署架构 | 链接 |
|---|---|---|
| MySQL | 使用Docker-Compose部署MySQL一主二从半同步复制高可用MHA集群 | Docker-Compose部署教程 |
| Redis | 三主三从集群(三种方式部署/18个节点的Redis Cluster模式) | 三种部署方式教程 |
| RocketMQ | DLedger高可用集群(9节点) | 部署指南 |
| Nacos+Nginx | 集群+负载均衡(9节点) | Docker部署方案 |
| Kubernetes | 容器编排安装 | 最全安装教程 |
开源项目分享
| 项目名称 | 链接地址 |
|---|---|
| 高并发红包雨项目 | https://gitee.com/java_wxid/red-packet-rain |
| 微服务技术集成demo项目 | https://gitee.com/java_wxid/java_wxid |
管理经验
【公司管理与研发流程优化】针对研发流程、需求管理、沟通协作、文档建设、绩效考核等问题的综合解决方案:https://download.youkuaiyun.com/download/java_wxid/91148718
希望各位读者朋友能够多多支持!
现在时代变了,信息爆炸,酒香也怕巷子深,博主真的需要大家的帮助才能在这片海洋中继续发光发热,所以,赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!
- 💂 博客主页: Java程序员廖志伟
- 👉 开源项目:Java程序员廖志伟
- 🌥 哔哩哔哩:Java程序员廖志伟
- 🎏 个人社区:Java程序员廖志伟
- 🔖 个人微信号:
SeniorRD
🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

被折叠的 条评论
为什么被折叠?



