Spring中Bean的理解(Java)

news/2024/7/8 2:21:17 标签: java, spring, 后端, spring boot

1.Bean(可以简单地理解为对象)

在 Spring Boot 2 中,IoC(Inversion of Control)容器使用 Spring Framework 的 IoC 容器,即 Spring IoC 容器。

Spring IoC 容器是 Spring Framework 的核心组件,负责创建、装配和管理应用程序中的对象(Bean)以及它们之间的依赖关系。该容器通过依赖注入(Dependency Injection)来实现对象之间的解耦和灵活配置。

在 Spring 框架中,Bean 是一个由 Spring IoC 容器管理的对象。

2.在 Spring Boot 中,默认启动类上注解了 @SpringBootApplication 注解,该注解组合了 @Configuration、@EnableAutoConfiguration和@ComponentScan。

@ComponentScan注解会让 Spring进行包扫描并将标有 @Component、@Controller、@Service、@Repository 等组件注解的类注册为 Bean。这些被注解标记的类将由 Spring Boot 的 IoC 容器进行管理和依赖注入。

3.Bean和@Bean存在一些不同:

使用@Bean注解的方法通常被放置在一个被@Configuration 注解标记的类中,表示该类是一个配置类,用于声明和定义 Spring 应用程序中的 Bean。

在 Spring 容器启动时,如果使用了 @Configuration 和 @Bean注解,Spring 容器会扫描配置类,并调用其中被 @Bean 注解标记的方法,以实例化并注册相应的 Bean。

例如,下面的代码会在Spring Boot启动时实现new MyBean()。

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

4.@Autowired(可以简单理解为给对象赋值)

@Autowired 注解主要用于进行自动装配,即通过依赖注入的方式将其他 Bean 注入到当前 Bean 中。

可以在以下几种情况下使用 @Autowired:

在一个服务类中需要引用另一个组件类的实例时:

java">@Service
public class MyService {
    @Autowired
    private OtherService otherService;
    
    // 使用otherService对象进行操作...
}

在配置类中注入其他 Bean时:

java">@Configuration
public class AppConfig {
    
    @Autowired
    private OtherBean otherBean;
    
    // 其他配置及@Bean方法...
}

在构造函数中注入依赖时:

java">@Service
public class MyService {
    private final OtherService otherService;

    @Autowired
    public MyService(OtherService otherService) {
        this.otherService = otherService;
    }
    
    // 使用otherService对象进行操作...
}

注意:private final OtherService otherService;只是声明了将要使用的OtherService的实例,但却没有进行实例化或赋值。通过在构造函数中使用@Autowired注解标记OtherService otherService参数,可以告诉Spring容器在初始化MyService类时,自动注入一个OtherService的实例进来,从而使得MyService类中的 otherService字段得到实际的对象实例。


http://www.niftyadmin.cn/n/5196638.html

相关文章

Leetcode—5.最长回文子串【中等】

2023每日刷题(三十五) Leetcode—5.最长回文子串 中心扩展法算法思想 可以使用一种叫作“中心扩展法”的算法。由回文的性质可以知道,回文一定有一个中心点,从中心点向左和向右所形成的字符序列是一样的,并且如果字符…

日期相关整理

3214. 节日 有一类节日的日期并不是固定的,而是以“a 月的第 b 个星期 c ”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。 现在,给你 a,b,c 和 y1,y2,希望你输出从公元 y1 年到公元 y2 年间的每年的 a 月的第 b 个…

Fe-safe/Isight/Tosca2022新功能

介绍Fe-safe2022新功能。 Fe-safe 支持Abaqus2022 ODB文件 Isight 此版本中没有增强功能。 Tosca结构 Tosca Structure 2022中的新功能和增强功能: 增强拓扑优化的肋条Rib设计制造约束。 增强了拓扑优化的最大Member约束,该约束更健壮、稳定。 默…

【框架整合】Redis限流方案

1、Redis实现限流方案的核心原理&#xff1a; redis实现限流的核心原理在于redis 的key 过期时间&#xff0c;当我们设置一个key到redis中时&#xff0c;会将key设置上过期时间&#xff0c;这里的实现是采用lua脚本来实现原子性的。2、准备 引入相关依赖 <dependency>…

优思学院|什么是精益生产管理?从一个生活上的故事出发来说明。

你关掉电脑&#xff0c;离开办公室。 一个小时后&#xff0c;你进入家门和孩子们在一起。 你和家人一起吃晚饭。 你的老板打电话来查看你的项目进展。 你哄孩子入睡并给他们读个故事。 作为一个负责任的父母&#xff0c;你想要与孩子们的互动时间增加并提高生活的质量&…

[Kettle] 生成记录

在数据统计中&#xff0c;往往要生成固定行数和列数的记录&#xff0c;用于存放统计总数 需求&#xff1a;为方便记录1~12月份商品的销售总额&#xff0c;需要通过生成记录&#xff0c;生成一个月销售总额的数据表&#xff0c;包括商品名称和销售总额两个字段&#xff0c;记录…

(论文阅读51-57)图像描述3 53

51.文献阅读笔记&#xff08;KNN&#xff09; 简介 题目 Exploring Nearest Neighbor Approaches for Image Captioning 作者 Jacob Devlin, Saurabh Gupta, Ross Girshick, Margaret Mitchell, C. Lawrence Zitnick, arXiv:1505.04467 原文链接 http://arxiv.org/pdf/1…

不想花大价钱?这10款替代Axure的平替软件更划算!

Axure是许多产品经理和设计师进入快速原型设计的首选工具&#xff0c;但Axure的使用成本相对较高&#xff0c;学习曲线陡峭&#xff0c;许多设计师正在寻找可以取代Axure的原型设计工具&#xff0c;虽然现在有很多可选的设计工具&#xff0c;但质量不均匀&#xff0c;可以取代A…