通过springboot框架创建对象(一)

简介: 在Spring Boot中,对象创建依赖于Spring框架的核心特性——控制反转(IoC)和依赖注入(DI)。IoC将对象的创建和管理交由Spring应用上下文负责,开发者只需定义依赖关系。DI通过构造函数、setter方法或字段注入实现依赖对象的传递。Spring Boot的自动配置机制基于类路径和配置文件,自动为应用程序配置Spring容器,简化开发过程。Bean的生命周期包括定义扫描、实例化、依赖注入、初始化和销毁回调,均由Spring容器管理。这些特性提高了开发效率并简化了代码维护。

在 Spring Boot 框架中创建对象主要依赖于 Spring 框架的核心特性 —— 控制反转(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI),下面详细介绍其原理。

  1. 控制反转(IoC)原理
    控制反转是一种设计原则,它将对象的创建和管理控制权从代码内部转移到外部容器。在 Spring Boot 中,这个外部容器就是 Spring 的应用上下文(ApplicationContext)。
    原理阐述
    传统的编程方式中,对象的创建和依赖关系的管理由开发者在代码中手动完成。而在 IoC 模式下,对象的创建、初始化、销毁等生命周期管理都由 Spring 容器负责。开发者只需要定义对象和它们之间的依赖关系,Spring 容器会根据这些定义来创建和组装对象。
    示例理解
    假设我们有一个 UserService 类,它依赖于 UserRepository 类。
    代码如下:

    public class UserService {
     private UserRepository userRepository;
    
     public UserService() {
         this.userRepository = new UserRepository();
     }
    }
    

    l
    在 loC 模式下,我们将对象的创建交给 Spring 容器:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}
  1. 依赖注入(DI)原理
    依赖注入是实现控制反转的一种具体方式,它通过构造函数、setter 方法或字段注入等方式将依赖对象提供给需要的对象。
    原理阐述
    Spring 容器在创建对象时,会分析对象的依赖关系,并将这些依赖对象注入到目标对象中。注入的过程在对象创建后立即进行,确保对象在使用时其依赖已经准备好。
    注入方式及原理
    构造函数注入
    构造函数注入是指通过构造函数将依赖对象传递给目标对象。Spring 容器在创建对象时,会自动查找合适的构造函数,并将依赖对象作为参数传递进去。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

Setter 方法注入
Setter 方法注入是指通过 setter 方法将依赖对象设置到目标对象中。Spring 容器在创建对象后,会调用相应的 setter 方法进行注入。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private UserRepository userRepository;

    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

3 . Spring Boot 自动配置原理
Spring Boot 的自动配置是其一大特色,它基于类路径下的依赖和配置文件,自动为应用程序配置 Spring 容器。
原理阐述
Spring Boot 的自动配置机制通过 @EnableAutoConfiguration 注解触发。该注解会导入 AutoConfigurationImportSelector 类,该类会从 META-INF/spring.factories 文件中读取所有的自动配置类。然后,Spring Boot 会根据类路径下的依赖和配置文件中的属性,判断哪些自动配置类应该生效,并将相应的 Bean 定义注册到 Spring 容器中。
示例理解
当我们在项目中引入 Spring Data JPA 的依赖时,Spring Boot 会自动配置数据源、JPA 实体管理器等相关的 Bean。这是因为 Spring Boot 的自动配置类会检查类路径下是否存在 Spring Data JPA 的相关类,如果存在,则会自动配置相应的 Bean。
4 . Bean 的创建和生命周期管理
Spring 容器在启动时,会根据 Bean 的定义(通过注解或 XML 配置)创建 Bean 实例,并管理它们的生命周期。
原理阐述
Bean 定义扫描:Spring Boot 会自动扫描带有特定注解(如 @Component、@Service、@Repository 等)的类,并将它们注册为 Bean 定义。
Bean 实例化:根据 Bean 定义,Spring 容器会使用反射机制创建 Bean 实例。对于单例 Bean,容器只会创建一个实例;对于原型 Bean,每次请求时都会创建一个新的实例。
依赖注入:在 Bean 实例化后,Spring 容器会根据依赖关系进行注入,确保 Bean 的依赖对象已经准备好。
初始化回调:如果 Bean 实现了 InitializingBean 接口或使用了 @PostConstruct 注解,Spring 容器会在 Bean 实例化和依赖注入完成后调用相应的初始化方法。
销毁回调:如果 Bean 实现了 DisposableBean 接口或使用了 @PreDestroy 注解,Spring 容器会在销毁 Bean 之前调用相应的销毁方法。
综上所述,Spring Boot 框架通过控制反转和依赖注入的原理,将对象的创建和管理交给 Spring 容器,同时利用自动配置机制简化了开发过程,提高了开发效率。

相关文章
|
6月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
484 2
|
7月前
|
XML JSON Java
Spring框架中常见注解的使用规则与最佳实践
本文介绍了Spring框架中常见注解的使用规则与最佳实践,重点对比了URL参数与表单参数的区别,并详细说明了@RequestParam、@PathVariable、@RequestBody等注解的应用场景。同时通过表格和案例分析,帮助开发者正确选择参数绑定方式,避免常见误区,提升代码的可读性与安全性。
|
5月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
8月前
|
Java Spring
聊聊你对SpringBoot框架的理解 ?
SpringBoot是Spring家族中流行的子项目,旨在简化Spring框架开发的繁琐配置。它主要提供三大功能:starter起步依赖简化依赖管理,自动配置根据条件创建Bean,以及内嵌Web服务器支持Jar包运行,极大提升了开发效率。
257 0
|
5月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
381 8
|
6月前
|
监控 Kubernetes Cloud Native
Spring Batch 批处理框架技术详解与实践指南
本文档全面介绍 Spring Batch 批处理框架的核心架构、关键组件和实际应用场景。作为 Spring 生态系统中专门处理大规模数据批处理的框架,Spring Batch 为企业级批处理作业提供了可靠的解决方案。本文将深入探讨其作业流程、组件模型、错误处理机制、性能优化策略以及与现代云原生环境的集成方式,帮助开发者构建高效、稳定的批处理系统。
694 1
|
8月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
883 1
|
8月前
|
NoSQL Java 数据库连接
SpringBoot框架
Spring Boot 是 Spring 家族中最流行的框架,旨在简化 Spring 应用的初始搭建与开发。它通过自动配置、起步依赖和内嵌服务器三大核心功能,大幅减少配置复杂度,提升开发效率。开发者可快速构建独立运行的 Web 应用,并支持多种数据访问技术和第三方集成。
|
7月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
1372 0
|
9月前
|
Java API 网络架构
基于 Spring Boot 框架开发 REST API 接口实践指南
本文详解基于Spring Boot 3.x构建REST API的完整开发流程,涵盖环境搭建、领域建模、响应式编程、安全控制、容器化部署及性能优化等关键环节,助力开发者打造高效稳定的后端服务。
1226 1