【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)

这篇具有很好参考价值的文章主要介绍了【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

代码脚手架我上传到网盘里面了,有需要的同学请自取
我用夸克网盘分享了「springboot-web-config2.zip」,点击链接即可保存。 链接:https://pan.quark.cn/s/f3872e6654cf

🍔Bean的获取

在Spring框架中,Bean是指由Spring容器管理的对象。Spring容器可以通过不同的方式获取Bean,常用的方法有以下几种:

  • 通过名称获取Bean:可以使用getBean方法通过Bean名称获取Bean。例如:MyBean myBean = (MyBean) context.getBean(“myBean”);
  • 通过类型获取Bean:可以使用getBean方法通过Bean类型获取Bean。例如:MyBean myBean = context.getBean(MyBean.class);
  • 通过名称和类型同时获取Bean:如果存在多个符合条件的Bean,可以使用带有名称和类型参数的getBean方法来获取Bean。例如:MyBean myBean = context.getBean(“myBean”, MyBean.class);

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

需要注意的是,Bean只有在Spring容器初始化时才会被创建,因此在获取Bean之前,必须确保Spring容器已经初始化完成。通常,在Web应用程序中,可以在Servlet容器启动时初始化Spring容器,以便在应用程序中随时获取Bean。

🎄注入IOC容器对象

在Spring框架中,Bean是由IOC容器来管理和创建的。因此,在获取Bean对象之前,需要先创建IOC容器对象,确保容器已经初始化完成,并且Bean已经被创建并添加到容器中。

具体来说,IOC容器是Spring框架的核心组件之一,它负责维护Bean的生命周期、依赖注入、AOP等功能。Spring框架提供了多种类型的IOC容器,包括BeanFactory、ApplicationContext等,每种容器都有不同的特点和使用方式。

通过创建IOC容器对象,可以让Spring框架自动扫描指定的配置文件或注解,并根据配置信息创建Bean对象。这些Bean对象可以通过IOC容器来管理,包括获取Bean实例、销毁Bean实例、依赖注入等。因此,在获取Bean对象之前,需要先创建IOC容器对象,确保容器已经初始化完成,并且Bean已经被创建并添加到容器中。

另外,通过IOC容器来获取Bean对象的好处在于,可以将Bean的创建和管理交给Spring框架来处理,减少了程序员的工作量,并提高了程序的可维护性和可扩展性。同时,IOC容器还能够管理Bean之间的依赖关系,实现松耦合的编程模式,提高了程序的灵活性和可测试性。

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

⭐代码实现

🛸根据bean的名称获取

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

DeptController bean1 = (DeptController) applicationContext.getBean("deptController");
        System.out.println(bean1);

🛸根据bean的类型获取

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

DeptController bean2 = applicationContext.getBean(DeptController.class);
        System.out.println(bean2);

🛸根据bean的名称和类型获取

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

DeptController bean3 = applicationContext.getBean("deptController", DeptController.class);
        System.out.println(bean3);

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

@SpringBootTest
class SpringbootWebConfig2ApplicationTests {

    @Autowired
    private ApplicationContext applicationContext;

    //获取bean对象
    @Test
    public void testGetBean() {
        //根据bean的名称获取
        DeptController bean1 = (DeptController) applicationContext.getBean("deptController");
        System.out.println(bean1);

        //根据bean的类型获取
        DeptController bean2 = applicationContext.getBean(DeptController.class);
        System.out.println(bean2);

        //根据bean的名称 及 类型获取
        DeptController bean3 = applicationContext.getBean("deptController", DeptController.class);
        System.out.println(bean3);

    }
}

我们运行一下
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

🎄Bean的作用域

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

配置Bean的作用域需要加上下面这个注解
@Scope

⭐代码实现

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java
运行后发现
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java
我们调用10次getBean方法,得到了10个bean对象

🎈注意

  • 默认singleton的bean,在容器启动的时候被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)
  • prototype的bean,每一次使用该bean的时候都会创建一个新的实例
  • 实际开发中,大多数Bean的单例的,也就是说大部分bean不需要配置scope属性

🎄第三方Bean

第三方 Bean 是指在软件开发中,由外部库或框架提供的可被集成到应用程序中的组件或对象。

在传统的 Java 开发中,通常使用 Spring Framework 进行应用程序的开发。Spring Framework 提供了一个 IoC(Inversion of Control)容器,负责管理应用程序中的对象(也称为 Bean)。开发者可以通过配置文件或注解的方式定义和注册自己的 Bean,然后由 Spring 容器进行实例化和管理。

除了自己定义的 Bean,还可以引入第三方库或框架提供的 Bean。这些第三方 Bean 可以是数据库连接池、消息队列、缓存库等各种组件。通过将这些第三方 Bean 集成到应用程序中,开发者可以直接使用这些功能强大的组件,而不需要从零开始编写相关的代码。

以 Spring Framework 为例,开发者可以通过 Maven 或 Gradle 等构建工具将第三方库的依赖添加到项目中,然后在 Spring 的配置文件或注解中声明并配置第三方 Bean。Spring 容器会负责实例化和管理这些第三方 Bean,使开发者能够轻松地在应用程序中使用它们。

总而言之,第三方 Bean 是指由外部库或框架提供的可被集成到应用程序中的组件或对象,通过集成这些第三方 Bean,开发者可以提高开发效率,复用优秀的功能组件。

⭐代码实现

🌺在启动类上进行配置(不建议)

我们在启动类上声明第三方bean
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java
加上@Bean后,会将当前方法的返回值对象交给IOC容器管理
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

🌺使用配置类进行配置

这样子,spring容器在启动的时候,会自动调用声明为bean的方法,然后把方法的返回值声明为spring容器里面的bean对象注入到ioc容器中

下面我们创建一个配置类
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java
运行成功
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java

🍔总结

在项目中,我们自定义一个类,如果我们想把这个类交给ioc容器管理,加上@Component衍生注解即可

如果这个类不是我们自己自定义的,是我们引入第三方依赖中的,而且我们还想把这个类交给ioc容器管理,那么我们应该定义一个方法,在这个方法上加上@Bean

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean),SpringBoot,spring boot,后端,java文章来源地址https://www.toymoban.com/news/detail-764386.html

到了这里,关于【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot:详解Bean生命周期和作用域

    🏡浩泽学编程 :个人主页  🔥 推荐专栏 :《深入浅出SpringBoot》《java项目分享》               《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 前面我们讲诉了将Bean正确地装配到IoC容器,却未讲诉IoC如何装配和销毁Bean。本篇文章主要讲诉一下Be

    2024年01月21日
    浏览(41)
  • spring中怎样优化第三方bean?

    需求:将数据库连接四要素提取到properties配置文件,spring来加载配置信息并使用这些信息来完成属性注入。第三方bean属性优化的思路如下: 1.在resources下创建一个jdbc.properties(文件的名称可以任意) 2.将数据库连接四要素配置到配置文件中 3.在Spring的配置文件中加载properties文件

    2024年02月16日
    浏览(41)
  • 如何获取springboot中所有的bean

    这段代码是一个使用 Spring Framework 的依赖注入(DI)功能的示例。它用 @Autowired 注解将一个类型为 MapString, Object 的变量声明为一个由 Spring 容器管理的 bean,并初始化为一个线程安全的 ConcurrentMap 实现对象。 从代码中可以看出以下几点: @Autowired :这是 Spring Framework 提供的一

    2024年02月09日
    浏览(50)
  • SpringBoot——Bean管理

    ​ 默认情况下,Spring项目启动时,会把Bean都创建好放在IOC容器中,如果主要获取这些Bean,可以通过如下方式: 根据name获取bean : Object getBean(String name) 根据类型获取bean : T T getBean(Class T requiredType) 根据name获取bean(带类型转换) : T T getBean(String name,Class T requiredType) ​

    2024年02月05日
    浏览(22)
  • SpringBoot中的bean管理

    默认 情况下,Spring项目启动时,会把bean都创建好放在IOC容器中,如果想要主动获取这些bean,可以通过如下方式: 根据 name 获取bean: 根据 类型 获取bean: 根据 name 获取bean(带 类型 转换) : 示例: 上述所说的【Spring项目启动时,会把其中的bean都创建好】还会受到 作用域 及 延迟

    2024年02月11日
    浏览(32)
  • [SpringBoot]如何在一个普通类中获取一个Bean

    最近在项目中出现了一个这种情况:我一顿操作猛如虎的写了好几个设计模式,然后在设计模式中的类中想将数据插入数据库,因此调用Mapper持久层,但是数据怎么都写不进去,在我一顿操作猛如虎的查找下,发现在普通类中用 @Autowired 注入的Bean是Null,也就是说注入失败了

    2024年01月19日
    浏览(46)
  • 【SpringBoot:详解Bean装配】

    🏡Java码农探花 :  🔥 推荐专栏 :springboot学习 🛸学无止境,不骄不躁,知行合一 文章目录 前言 一、IoC容器的简介 BeanFactory接口源码 二、Bean装配 扫描装配 探索启动类 条件装配 自定义Bean 总结 IoC ((Inversion of Control,控制反转)容器是 Spring 的核心,可以说 Spring 是一种

    2024年04月22日
    浏览(33)
  • SpringBoot:详解Bean装配

    🏡浩泽学编程 :个人主页  🔥 推荐专栏 :《SpringBoot从官方文档学习》《java项目分享》               《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 IoC ((Inversion of Control,控制反转)容器是 Spring 的核心,可以说 Spring 是一种基于 IoC容器编程的

    2024年02月03日
    浏览(39)
  • Springboot tomcat bean 默认作用域 singleton 情况下模拟线程不安全情况 设置多例方式 prototype

    目录 写一个控制层的类 验证方法 ​编辑 分别执行如下请求,先执行等待时间久的 日志结果 结论 配置多例模式 配置文件application.properties 类加注解 配置类方式 增加验证 控制层  服务层 都是  singleton 模式情况 模拟线程不安全情况 service 代码 ctr 测试方式 运行日志 结论

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包