📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)(进阶篇)、(架构篇)、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。

📘拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RocketMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。

📙不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。

Java程序员廖志伟

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

CSDN

在Spring框架中,IoC(控制反转)和DI(依赖注入)是两个紧密相连的核心概念。IoC是一种设计模式,它将对象的创建和依赖关系的配置从应用程序代码中分离出来,交由外部容器(如Spring容器)来管理。这种模式使得应用程序的组件更加解耦,提高了代码的可维护性和可测试性。

IoC与DI的原理

IoC的核心思想是“控制反转”,它将对象的创建权从程序员手中交给了Spring容器。在传统的程序设计中,程序员需要手动创建对象并设置其依赖关系,而在IoC模式下,Spring容器会自动创建对象并注入其依赖。

DI是IoC的一种实现方式,它通过注入的方式将依赖关系传递给对象。DI有几种不同的注入方式,包括:

  • 构造器注入:在对象构造时,通过构造器参数将依赖注入到对象中。
  • 设值注入:通过setter方法将依赖注入到对象中。
  • 字段注入:直接在对象的字段上注入依赖。

Bean生命周期管理

Spring容器在创建和管理Bean的过程中,会经历一系列的生命周期事件。这些事件包括:

  • 初始化前:在Bean创建之前,Spring容器会调用BeanPostProcessor接口的postProcessBeforeInitialization方法。
  • 初始化:Spring容器会调用Bean的构造器或setter方法,将依赖注入到Bean中。
  • 初始化后:在Bean初始化完成后,Spring容器会调用BeanPostProcessor接口的postProcessAfterInitialization方法。
  • 销毁:当Bean不再需要时,Spring容器会调用DisposableBean接口的destroy方法来销毁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,通过@Configuration注解标记一个类为配置类,并使用@Bean注解来声明Bean。

XML配置驱动

除了注解和Java配置,Spring还支持使用XML文件来配置Bean。

SpEL(Spring表达式语言)

SpEL是Spring提供的一种表达式语言,它可以用来在运行时动态地访问和操作对象属性、方法、集合等。

总结

Spring框架的IoC和DI机制、Bean生命周期管理、Bean作用域、BeanFactory和ApplicationContext、注解驱动开发、Java配置、XML配置驱动以及SpEL等特性,共同构成了Spring框架的核心。这些特性使得Spring框架成为了一个功能强大、易于使用的Java企业级应用开发框架。

CSDN

博主分享

📥博主的人生感悟和目标

Java程序员廖志伟

📙经过多年在CSDN创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续出版。

面试备战资料

八股文备战
场景 描述 链接
时间充裕(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.csdn.net/download/java_wxid/91148718

希望各位读者朋友能够多多支持!

现在时代变了,信息爆炸,酒香也怕巷子深,博主真的需要大家的帮助才能在这片海洋中继续发光发热,所以,赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!

🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐