📕我是廖志伟,一名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 框架中,核心容器是其最基础的部分,它负责管理应用程序中的对象,即 Bean。Bean 是 Spring 容器管理的对象,它们被实例化、配置和组装。Spring 容器通过控制反转(IoC)和依赖注入(DI)来管理这些 Bean。

控制反转(IoC)

IoC 是 Spring 的核心概念之一,它通过将对象的创建和依赖关系的配置从应用程序代码中分离出来,交由 Spring 容器来管理。在传统的编程模式中,对象通常通过“new”关键字来创建,而依赖关系通常是通过构造函数或 setter 方法来设置的。在 IoC 模式下,Spring 容器负责创建对象,并通过配置元数据(如 XML、注解或 Java 配置类)来设置依赖关系。

例如,一个服务类可能依赖于一个数据访问对象(DAO)。在 IoC 模式下,Spring 容器会创建服务类和数据访问对象的实例,并自动将数据访问对象注入到服务类中。

public class UserService {
    private final UserRepository userRepository;

    // 构造函数注入
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

依赖注入(DI)

DI 是 IoC 的实现方式,它允许 Spring 容器在运行时动态地将依赖关系注入到对象中。DI 可以通过多种方式实现,包括:

  • 构造函数注入:通过构造函数参数将依赖注入到对象中。
  • setter 方法注入:通过 setter 方法将依赖注入到对象中。
  • 字段注入:直接将依赖注入到对象的字段中。
public class UserService {
    private UserRepository userRepository;

    // 字段注入
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

Bean 生命周期管理

Spring 容器不仅负责创建和配置 Bean,还负责管理它们的整个生命周期。Spring 提供了多个回调接口,允许开发者自定义 Bean 的初始化和销毁逻辑。

public class MyBean implements InitializingBean, DisposableBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        // 初始化逻辑
    }

    @Override
    public void destroy() throws Exception {
        // 销毁逻辑
    }
}

Bean 作用域

Spring 支持多种 Bean 作用域,包括:

  • Singleton:默认作用域,每个 Spring 容器中只有一个实例。
  • Prototype:每次请求时创建一个新的实例。
  • Request:每个 HTTP 请求创建一个新的实例。
  • Session:每个 HTTP 会话创建一个新的实例。
@Bean
@Scope("prototype")
public MyBean myBean() {
    return new MyBean();
}

注解驱动开发

Spring 提供了一系列注解来简化配置,例如:

  • @Component:用于声明一个 Bean。
  • @Service:用于声明一个业务层 Bean。
  • @Repository:用于声明一个数据访问层 Bean。
  • @Autowired:用于自动注入依赖。
@Component
public class MyBean {
    // ...
}

Java 配置

Spring 支持使用 Java 配置类来替代 XML 配置。

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

XML 配置驱动

Spring 也支持使用 XML 文件来配置 Bean。

<bean id="myBean" class="com.example.MyBean">
    <!-- 配置属性 -->
</bean>

SpEL(Spring 表达式语言)

SpEL 是一种强大的表达式语言,用于在运行时计算值。它可以用于设置 Bean 属性、执行方法调用等。

public class MyBean {
    private String property;

    public void setProperty(String property) {
        this.property = property;
    }
}

// 使用 SpEL 设置属性
myBean.setProperty("${my.property}");

在 Spring 框架中,IoC 和 DI 是其核心概念,它们使得应用程序的配置更加灵活和可维护。通过使用注解和 Java 配置,开发者可以轻松地创建和配置 Bean,而无需编写大量的 XML 配置。SpEL 则提供了强大的表达式语言,用于在运行时计算值。这些特性共同构成了 Spring 框架的强大之处。

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和你一个都不能少~

更多推荐