通过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 容器,同时利用自动配置机制简化了开发过程,提高了开发效率。

相关文章
|
9月前
|
Java 容器 Spring
SpringBoot底层注解
SpringBoot底层注解
|
3月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
59 2
|
SQL XML Java
简单理解springboot的依赖注入
依赖注入,Dependency Injection,简称DI,是spring中的核心技术,此技术贯穿Spring全局,是必须要熟练掌握的知识点。在本文中,我们将要深入研究spring中的IOC和DI,理解核心思想,并学会如何在spring boot中使用基于java和注解的方式正确使用DI来创建spring应用程序。控制反转 IOC要理解DI,首先需要理解spring的核心思想之一,控制反转(In
2260 0
简单理解springboot的依赖注入
|
Java 开发者 Spring
springboot依赖注入的几种方式
springboot依赖注入的几种方式
452 0
|
XML Java 数据格式
springboot的底层注解【详细】
springboot的底层注解【详细】
82 0
|
XML JavaScript 小程序
SpringBoot 最核心的27个注解,你了解多少? 上
SpringBoot 最核心的27个注解,你了解多少? 上
|
Java 数据库连接 Spring
SpringBoot 最核心的27个注解,你了解多少? 下
SpringBoot 最核心的27个注解,你了解多少? 下
|
前端开发 Java
|
设计模式 Java
Springboot 使用装饰器模式,快看,它装起来了
Springboot 使用装饰器模式,快看,它装起来了
462 0
Springboot 使用装饰器模式,快看,它装起来了

热门文章

最新文章