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

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

在 Spring 框架中,核心容器是其最基础的部分,它负责管理应用程序中的对象,即 Bean。BeanFactory 和 ApplicationContext 是 Spring 容器的主要接口,它们负责实例化、配置和组装 Bean。BeanFactory 是一个轻量级的容器,它提供了基本的依赖注入功能,而 ApplicationContext 则提供了更多的功能,如事件发布、国际化支持和应用上下文生命周期管理。
IoC(控制反转)是 Spring 的核心思想之一,它将对象的创建和依赖关系的配置从代码中分离出来,由 Spring 容器来管理。这种做法使得对象之间的耦合度降低,提高了代码的可维护性和可测试性。
DI(依赖注入)是实现 IoC 的主要方式,它允许在运行时动态地将依赖关系注入到对象中。Spring 支持多种注入方式,包括构造器注入、设值注入和字段注入。
Bean 生命周期管理是 Spring 提供的另一个重要功能,它允许在 Bean 的创建、使用和销毁过程中执行特定的操作。Spring 提供了初始化和销毁回调接口,以及基于注解的生命周期管理。
Bean 作用域定义了 Bean 的生命周期和共享方式。Spring 支持多种作用域,包括单例(Singleton)和原型(Prototype)。单例作用域意味着每个 Bean 实例在容器中只有一个实例,而原型作用域则表示每次请求都会创建一个新的 Bean 实例。
Spring 提供了两种类型的容器:BeanFactory 和 ApplicationContext。BeanFactory 是一个轻量级的容器,它提供了基本的依赖注入功能。ApplicationContext 是一个更高级的容器,它提供了更多的功能,如事件发布、国际化支持和应用上下文生命周期管理。
注解驱动开发是 Spring 3.0 引入的一个特性,它允许使用注解来替代 XML 配置。@Component、@Service、@Repository 和 @Autowired 等注解被广泛用于定义 Bean、注入依赖和配置 Bean。
Java 配置是 Spring 3.1 引入的另一个特性,它允许使用 Java 代码来替代 XML 配置。@Configuration 和 @Bean 注解被用于定义配置类和配置方法。
XML 配置驱动是 Spring 早期使用的一种配置方式,它允许使用 XML 文件来定义 Bean 和依赖关系。
SpEL(Spring 表达式语言)是 Spring 提供的一种表达式语言,它允许在运行时动态地计算值。SpEL 可以用于在配置文件、注解和表达式上下文中计算值。
在 Spring AOP(面向切面编程)中,切面(Aspect)是包含通知(Advice)和连接点(Join Point)的模块。通知是执行在连接点上的操作,而连接点则是程序执行过程中的特定点,如方法执行前、执行后等。
切点(Pointcut)定义了哪些连接点应该被通知所关注。引入(Introduction)允许在运行时动态地添加新的方法和属性到目标对象中。
织入(Weaving)是将通知应用到目标对象的过程。@AspectJ 注解支持是 Spring AOP 提供的一种注解驱动的方式,它允许使用 @AspectJ 注解来定义切面。
在 Spring 数据访问与集成中,JDBC 抽象(JdbcTemplate)提供了一个简单易用的 API 来执行 JDBC 操作。事务管理是 Spring 数据访问的核心功能之一,它提供了声明式事务和编程式事务的支持。
事务传播机制定义了事务边界如何传播到嵌套的调用中。事务隔离级别定义了事务并发执行时的隔离程度。
DAO(数据访问对象)模式是 Spring 提供的一种数据访问模式,它将数据访问逻辑封装在一个单独的类中。
ORM(对象关系映射)集成是 Spring 提供的一种将对象模型映射到关系数据库模型的方式,它支持 Hibernate、JPA 和 MyBatis 等ORM框架。
Spring Data 是 Spring 框架提供的一套数据访问抽象层,它支持 JPA、MongoDB、Redis 等多种数据源。
在 Spring Web 与 MVC 中,DispatcherServlet 是 Spring MVC 的前端控制器,它负责接收请求并调用相应的处理器。控制器(@Controller、@RestController)负责处理请求并返回响应。
请求映射(@RequestMapping、@GetMapping、@PostMapping)定义了请求与处理器方法的映射关系。视图解析(ViewResolver)负责将逻辑视图名解析为物理视图。
数据绑定(@RequestParam、@PathVariable、@RequestBody)允许将请求参数绑定到控制器方法参数中。返回处理(@ResponseBody、ResponseEntity)允许将对象直接写入响应体。
文件上传(MultipartFile)允许控制器接收上传的文件。拦截器(HandlerInterceptor)允许在请求处理过程中执行特定的操作。
异常处理(@ControllerAdvice、@ExceptionHandler)允许全局捕获和处理异常。
Spring WebFlux 是 Spring 框架提供的一种响应式编程模型,它允许异步处理请求。
在 Spring Boot 核心特性中,自动配置(Auto-Configuration)是 Spring Boot 的核心功能之一,它允许 Spring Boot 自动配置应用程序所需的依赖和配置。
起步依赖(Starter POMs)是 Spring Boot 提供的一套预配置的依赖项,它们简化了应用程序的构建过程。
嵌入式容器(Tomcat、Jetty、Undertow)允许 Spring Boot 应用程序以独立的可执行 JAR 文件的形式运行。
配置文件(application.properties / .yml)允许应用程序配置外部化。
Profile 多环境配置允许应用程序根据不同的环境(开发、测试、生产)加载不同的配置。
Actuator(应用监控)允许应用程序暴露其运行时指标和配置信息。
Spring Boot CLI 允许使用命令行工具来创建、构建和运行 Spring Boot 应用程序。
在 Spring Cloud 微服务组件中,服务注册与发现(Eureka、Nacos、Consul、Zookeeper)允许服务实例注册和发现其他服务实例。
负载均衡(Ribbon、LoadBalancer)允许在多个服务实例之间进行负载均衡。
服务调用(OpenFeign)允许以声明式的方式调用其他服务。
熔断器(Hystrix、Resilience4j)允许在服务调用失败时进行熔断,以防止系统雪崩。
网关(Zuul、Spring Cloud Gateway)允许集中处理所有进入和离开应用程序的流量。
配置中心(Config Server、Nacos Config)允许集中管理应用程序的配置。
消息总线(Bus)允许在分布式系统中广播配置和事件。
链路追踪(Sleuth + Zipkin、SkyWalking)允许跟踪分布式系统的请求路径。
分布式事务(Seata)允许跨多个服务的事务管理。
在 Spring Security 安全中,身份认证(Authentication)允许验证用户的身份。
授权(Authorization)允许控制用户对资源的访问。
表单登录与注销允许用户通过表单登录和注销。
OAuth2 协议支持允许使用 OAuth2 协议进行身份认证和授权。
JWT(JSON Web Token)允许使用 JWT 进行身份认证。
方法级安全(@PreAuthorize)允许在方法级别上控制访问。
CSRF 防护允许防止跨站请求伪造攻击。
在 Spring 设计模式应用中,工厂模式(BeanFactory)允许创建对象实例。
单例模式(Bean 作用域)确保每个 Bean 实例在容器中只有一个实例。
代理模式(AOP 动态代理)允许动态地为对象添加功能。
模板方法(JdbcTemplate、RestTemplate)允许定义一个操作步骤,并将一些步骤延迟到子类中实现。
观察者模式(ApplicationEvent)允许对象在状态变化时通知其他对象。
适配器模式(HandlerAdapter)允许将一个类的接口转换成客户期望的另一个接口。
在 Spring Messaging 中,JMS 集成允许使用 Java 消息服务。
Spring Integration 允许使用企业集成模式。
Spring Batch 允许进行批处理操作。
Spring Session 允许进行分布式会话管理。
Spring Cache 允许进行缓存抽象。
在 JVM(Java 虚拟机)核心知识点中,JVM 基础架构包括类加载子系统(ClassLoader)、运行时数据区(方法区、堆、虚拟机栈、本地方法栈、程序计数器)、执行引擎(解释器、JIT 编译器)和本地方法接口(JNI)。
内存模型与管理包括堆内存分区(新生代 Eden/S0/S1、老年代)、方法区(元空间 MetaSpace)和直接内存(Direct Memory)。
垃圾回收机制包括 GC 算法(标记-清除、复制、标记-整理、分代收集)、垃圾收集器(Serial、Parallel、CMS、G1、ZGC、Shenandoah)和可达性分析算法(GC Roots)。
类加载机制包括加载过程(加载、链接、初始化)、双亲委派模型(启动类加载器、扩展类加载器、应用类加载器)和自定义类加载器。
性能监控与调优包括 JVM 参数配置(-Xms、-Xmx、-XX)和工具使用(jps、jstat、jmap、jstack、VisualVM)。
在 Spring Boot 核心知识点中,核心机制包括自动配置原理(@EnableAutoConfiguration、spring.factories)和起步依赖(Starter POMs)。
Spring Boot 特性包括 Actuator(健康检查、Metrics 监控)、条件注解(@ConditionalOnClass、@ConditionalOnProperty)和 Spring Boot CLI。
Web 开发包括 RESTful API 设计(@RestController、@RequestMapping)、参数绑定(@RequestParam、@PathVariable、@RequestBody)和全局异常处理(@ControllerAdvice)。
数据访问包括 Spring Data JPA(Repository 接口、JPQL)和 MyBatis 集成(@MapperScan、动态 SQL)。
高级功能包括缓存抽象(@Cacheable、Redis 集成)、消息队列集成(JMS、RabbitMQ、Kafka)和定时任务(@Scheduled)。
JVM 与 Spring Boot 关联点包括 JVM 参数调优对 Spring Boot 性能影响、类加载机制与 Spring Boot 自动配置、内存泄漏排查。
在 Spring MVC 知识点中,基础架构组件包括 DispatcherServlet(前端控制器)、HandlerMapping(请求映射处理器)、HandlerAdapter(处理器适配器)、ViewResolver(视图解析器)、HandlerInterceptor(拦截器)。
注解驱动开发包括 @Controller / @RestController、@RequestMapping / @GetMapping / @PostMapping、@RequestParam / @PathVariable / @RequestBody、@ResponseBody / ResponseEntity、@ModelAttribute / @SessionAttribute。
请求处理流程包括客户端请求进入 DispatcherServlet、HandlerMapping 匹配控制器方法、HandlerAdapter 执行目标方法、ViewResolver 解析逻辑视图名渲染视图返回响应。
数据绑定与验证包括数据绑定(表单对象自动填充)、类型转换器(Converter / Formatter)和校验框架(@Valid、Hibernate Validator)。
视图技术包括 JSP / Thymeleaf / FreeMarker、JSON 序列化(Jackson / Gson)和 XML 处理(JAXB / XStream)。
文件与异常处理包括文件上传(MultipartFile)、全局异常处理(@ControllerAdvice + @ExceptionHandler)和 HTTP 状态码控制(@ResponseStatus)。
RESTful 支持包括 HTTP 方法映射(PUT/DELETE/PATCH)、HATEOAS(超媒体驱动 API)和内容协商(Accept 头匹配)。
异步处理包括 @Async 异步方法调用、DeferredResult / Callable(非阻塞响应)和 SSE(Server-Sent Events)。
国际化与静态资源包括 LocaleResolver(多语言支持)、静态资源映射(ResourceHandlerRegistry)和缓存控制(Cache-Control 头配置)。
测试支持包括 MockMvc(控制器单元测试)和 TestContext 框架(集成测试)。
在 Spring Cloud 知识点中,服务注册与发现包括 Eureka、Nacos、Consul、Zookeeper。
服务调用与负载均衡包括 Ribbon、Spring Cloud LoadBalancer、OpenFeign 和 RestTemplate。
服务容错与熔断包括 Hystrix、Resilience4j 和 Sentinel。
网关与路由包括 Spring Cloud Gateway、Zuul 和 API 路由规则。
分布式配置中心包括 Spring Cloud Config、Nacos Config 和 Apollo。
消息总线与事件驱动包括 Spring Cloud Bus 和 Spring Cloud Stream。
分布式链路追踪包括 Sleuth、Zipkin 和 SkyWalking。
分布式事务包括 Seata。
安全与认证包括 Spring Cloud Security、OAuth2、JWT 和 CSRF 防护。
监控与管理包括 Spring Boot Actuator、Admin Server、Prometheus + Grafana 和 QoS 运维命令。
其他生态组件包括 Spring Cloud Function、Spring Cloud Kubernetes 和 Spring Cloud Task。
在并发编程核心知识点中,线程基础包括线程生命周期(新建、就绪、运行、阻塞、终止)、线程创建方式(继承 Thread、实现 Runnable/Callable)、线程优先级(setPriority)和守护线程(setDaemon)。
线程同步与锁包括 synchronized(方法同步、代码块同步)、volatile(可见性、禁止指令重排)、Lock 接口(ReentrantLock、ReadWriteLock)、CAS(Compare-And-Swap,Atomic 类)和 ThreadLocal(线程局部变量)。
并发工具类包括 CountDownLatch(倒计数器)、CyclicBarrier(循环栅栏)、Semaphore(信号量)、Exchanger(线程间数据交换)和 Phaser(阶段同步器)。
线程池包括 Executor 框架(Executor、ExecutorService)、ThreadPoolExecutor(核心参数:corePoolSize、maxPoolSize 等)和 Executors 工具类(newFixedThreadPool、newCachedThreadPool 等)。
并发集合包括 ConcurrentHashMap、CopyOnWriteArrayList/CopyOnWriteArraySet、BlockingQueue(ArrayBlockingQueue、LinkedBlockingQueue)和 ConcurrentLinkedQueue。
异步编程包括 Future/FutureTask、CompletableFuture(链式异步调用)和 Reactive 编程(Project Reactor、RxJava)。
内存模型与 JMM 包括 Happens-Before 原则、指令重排序和内存屏障。
在 MyBatis 核心知识点中,基础架构包括 SqlSessionFactory(工厂类)、SqlSession(会话对象)和 Mapper 接口绑定(动态代理实现)。
XML 映射配置包括 CRUD 标签(select、insert、update、delete)、参数传递(#{}、${})、结果映射(resultMap、resultType)和动态 SQL(if、choose、foreach、trim)。
高级特性包括一级缓存(SqlSession 级别)、二级缓存(Mapper 级别)、延迟加载(lazyLoadingEnabled)和插件机制(Interceptor)。
关联查询包括一对一(association)、一对多(collection)和多对多(中间表映射)。
注解开发包括 @Select/@Insert/@Update/@Delete、@Results/@Result、@Param(参数绑定)。
整合与扩展包括 Spring 整合(SqlSessionTemplate、MapperScannerConfigurer)、分页插件(PageHelper)和代码生成器(MyBatis Generator)。
性能优化包括批量操作(BatchExecutor)、SQL 优化(EXPLAIN 分析)和连接池配置(HikariCP、Druid)。
在 Dubbo 知识点中,基础架构包括服务提供者(Provider)、服务消费者(Consumer)、注册中心(Registry)、监控中心(Monitor)和容器(Container)。
核心配置包括 XML 配置(服务暴露/引用)、注解驱动(@DubboService、@DubboReference)、API 配置(ServiceConfig、ReferenceConfig)和属性配置(dubbo.properties)。
注册中心实现包括 Zookeeper、Nacos、Redis、Multicast(广播模式)和 Simple(直连模式)。
通信协议包括 Dubbo 协议(默认 TCP 长连接)、RMI 协议、Hessian 协议、HTTP/HTTPS 协议、gRPC 协议和 WebService 协议。
集群容错包括 Failover(失败自动切换)、Failfast(快速失败)、Failsafe(失败忽略)、Failback(失败自动恢复)、Forking(并行调用)和 Broadcast(广播调用)。
负载均衡策略包括 Random(随机)、RoundRobin(轮询)、LeastActive(最少活跃调用)和 ConsistentHash(一致性哈希)。
服务治理包括服务分组(group)、服务版本控制(version)、多协议暴露、服务路由规则(条件路由/标签路由)和动态配置中心、权重调整和服务降级。
高可用机制包括服务注册与发现、健康检查、集群容错、限流策略(TpsLimitFilter)和熔断机制。
监控与运维包括 Dubbo Admin 控制台、服务调用统计、依赖关系图、QoS 运维命令和端口 22222。
扩展机制包括 SPI 扩展点、Filter 拦截器链(自定义扩展)、RouterFactory(自定义路由)和 LoadBalance 接口(自定义负载均衡)。
高级特性包括异步调用(AsyncContext)、参数回调、事件通知(oninvoke/onreturn/onthrow)、泛化调用(GenericService)、隐式参数传递(RpcContext)和令牌验证。
序列化框架包括 Hessian2(默认)、Java 原生序列化、JSON 序列化、Kryo、FST 和 Protobuf。
生态整合包括 Spring Boot Starter(dubbo-spring-boot-starter)、Spring Cloud Alibaba 集成、Metrics 监控(Prometheus)和分布式链路追踪(OpenTracing)。
在 Zookeeper 知识点中,基础架构与角色包括分布式协调服务定位、集群角色(Leader、Follower、Observer)和会话(Session)管理。
数据模型包括类似文件系统的层次化数据结构、ZNode 节点类型(PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL)和 ZNode 数据存储限制(1MB)。
集群与一致性机制包括半数存活原则(Quorum)、ZAB 协议(ZooKeeper Atomic Broadcast)、消息广播机制、崩溃恢复机制、全局数据一致性、原子更新操作和顺序执行请求。
监听与通知机制包括 Watcher 监听机制、Watcher 注册方式(getData、exists、getChildren)一次性通知特性、节点变更事件监听(数据更新、节点删除、子节点变更)。
核心功能与应用场景包括统一命名服务、统一配置管理、集群管理(节点动态上下线、状态监控)、Master 选举、分布式锁实现、队列管理和软负载均衡。
扩展与运维包括 SPI 扩展点、监控工具(ZooKeeper Admin、Prometheus 集成)和高可用性设计、配置动态同步。
在 RabbitMQ 知识点中,基础架构与核心组件包括 Broker(消息代理服务器)、Virtual Host(虚拟主机隔离)、Connection(TCP 长连接)、Channel(轻量级通信通道)、Exchange(消息路由组件)、Queue(消息存储队列)和 Binding(Exchange 与 Queue 的绑定规则)。
消息模型与协议包括 AMQP 协议(Advanced Message Queuing Protocol)、生产者(Publisher)与消费者(Consumer)模型、消息确认机制(ACK/NACK)、消息持久化(Delivery Mode=2)、消息属性(Headers、Priority、TTL 等)。
Exchange 类型与路由策略包括 Direct Exchange(精确路由)、Fanout Exchange(广播路由)、Topic Exchange(通配符路由)、Headers Exchange(键值对匹配路由)和默认 Exchange(无名 Exchange)。
消息可靠性保障包括事务机制(txSelect/txCommit/txRollback)、Confirm 模式(

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

📙经过多年在优快云创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续出版。
- 《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
🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~
2688

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



