在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

 更新时间:2025年02月21日 14:47:37   作者:和烨  
本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean管理,示例中定义了一个Student类,并通过配置类TestConfig初始化Student对象,在测试类中,通过@Autowired注解自动注入Student对象并输出其属性值,感兴趣的朋友跟随小编一起看看吧

在 Spring Boot 中使用 @Autowired 和 @Bean 注解

在 Spring Boot 中,依赖注入(Dependency Injection,简称 DI)是通过 @Autowired 注解来实现的,能够有效地简化对象之间的依赖关系。同时,使用 @Bean 注解可以帮助我们在配置类中显式地定义和初始化 Bean。本文将通过一个具体示例,演示如何在 Spring Boot 中使用 @Autowired@Bean 来管理 Bean。

示例背景

假设我们有一个 Student 类,并希望通过配置类 TestConfig 来初始化 Student 对象,之后在测试类中通过 @Autowired 注解将其自动注入并使用。

1. 定义 Student 类

首先,我们定义一个简单的 Student 类,使用 @Data 注解来生成常见的 Getter、Setter、toString 等方法。

import lombok.Data;
@Data
public class Student {
    private String name;
}

在上面的 Student 类中,@Data 注解来自 Lombok,它会自动为我们生成类的所有 Getter、Setter 和 toString 等方法。这样,我们就不需要手动编写这些常见的代码,使得代码更加简洁。

2. 配置类:初始化 Bean

接下来,我们需要创建一个配置类 TestConfig,其中定义一个 @Bean 注解的方法来初始化 Student 对象。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TestConfig {
    @Bean
    public Student studentInit() {
        Student student = new Student();
        student.setName("初始化");
        return student;
    }
}
  • @Configuration 注解表示该类是一个配置类,Spring 会扫描该类并根据其中的 Bean 定义来初始化 Bean。
  • @Bean 注解用于告诉 Spring 容器:studentInit() 方法返回的对象(在这里是 Student)应该作为一个 Bean 进行管理。这样,Student 对象就会成为 Spring 容器中的一个管理对象。

在这个配置类中,我们显式地初始化了一个 Student 对象,并设置了它的 name 属性为 "初始化"

3. 测试类:

使用 @Autowired 注解自动注入 Bean

在测试类中,我们将通过 @Autowired 注解将 Student 对象自动注入,并输出 Student 的名字。

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class StudentTest {
    @Autowired
    private Student student;
    @Test
    void contextLoads13() {
        System.out.println(student.getName()); // 输出:初始化
    }
}
  • @SpringBootTest 注解表示这是一个 Spring Boot 测试类,它会启动 Spring 容器来进行集成测试。
  • @Autowired 注解自动注入 Student Bean。Spring 会自动找到符合类型的 Student Bean 并注入到该字段中。
  • 在测试方法 contextLoads13() 中,调用 student.getName() 输出 Student 对象的 name 属性值,应该输出 "初始化",这与我们在 TestConfig 中定义的值一致。

4. Spring Boot 的自动装配

  • 在这个示例中,我们看到通过 @Autowired 注解,Spring 容器会根据 Student 类型自动为我们注入合适的 Bean。无需手动配置或创建实例。
  • 这种自动注入机制是 Spring Framework 中非常强大的特性,可以极大地简化类与类之间的依赖管理。

5. 总结

通过上述示例,我们学到了以下几点:

  • @Bean 注解:通过该注解,我们可以在配置类中显式地定义 Bean,使得对象被 Spring 容器管理。
  • @Autowired 注解:通过该注解,Spring 会自动根据类型将 Bean 注入到需要依赖的地方。
  • @Data 注解:简化了 Student 类的代码,不必手动编写 Getter、Setter 等方法。

在实际开发中,Spring 的依赖注入(DI)功能使得类之间的耦合度大大降低,提高了代码的可维护性和扩展性。通过灵活使用 @Autowired@Bean 注解,可以有效地管理和共享对象。

到此这篇关于在 Spring Boot 中使用 `@Autowired` 和 `@Bean` 注解的文章就介绍到这了,更多相关springboot @Autowired和@Bean注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot导出Excel表格到指定路径的代码详解

    SpringBoot导出Excel表格到指定路径的代码详解

    Spring Boot导出Excel通常涉及到使用第三方库如Apache POI或者XlsxWriter等,它们能帮助你在Spring应用中生成并下载Excel文件,那么SpringBoot如何导出Excel表格到指定路径,本文将给大家详细的介绍一下
    2024-07-07
  • Java如何主动从当前线程获取异常信息

    Java如何主动从当前线程获取异常信息

    这篇文章主要介绍了Java如何主动从当前线程获取异常信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 老生常谈foreach(增强for循环)和for的区别

    老生常谈foreach(增强for循环)和for的区别

    下面小编就为大家带来一篇老生常谈foreach(增强for循环)和for的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Spring实现三级缓存机制

    Spring实现三级缓存机制

    三级缓存机制是Spring解决循环依赖问题的关键,本文主要介绍了Spring实现三级缓存机制,具有一定的参考价值,感兴趣的可以了解一下
    2025-02-02
  • Java Thread之Sleep()使用方法及总结

    Java Thread之Sleep()使用方法及总结

    这篇文章主要介绍了Java Thread之Sleep()使用方法及总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java实现经典拳皇误闯冒险岛游戏的示例代码

    Java实现经典拳皇误闯冒险岛游戏的示例代码

    《拳皇误闯冒险岛》是拳皇和冒险岛素材的基于JavaSwing的动作类游戏。本文将用Java语言实现这一游戏,需要的小伙伴可以参考一下
    2022-02-02
  • Java String对象使用方法详解

    Java String对象使用方法详解

    这篇文章主要介绍了Java String对象使用方法详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • Java 实战项目锤炼之朴素风格个人博客系统的实现流程

    Java 实战项目锤炼之朴素风格个人博客系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java+vue+Springboot+ssm+mysql+maven+redis实现一个朴素风格的个人博客系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • SpringBoot jar包大小优化问题及解决

    SpringBoot jar包大小优化问题及解决

    这篇文章主要介绍了SpringBoot jar包大小优化问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • spring boot使用sharding jdbc的配置方式

    spring boot使用sharding jdbc的配置方式

    这篇文章主要介绍了spring boot使用sharding jdbc的配置方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12

最新评论