我的编程空间,编程开发者的网络收藏夹
学习永远不晚

spring Bean创建方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

spring Bean创建方法是什么

本篇内容主要讲解“spring Bean创建方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring Bean创建方法是什么”吧!

bean创建的流程图

写在前面:建议大家一定要自己用实例跑一遍,做好记录。如果只是看看会非常抽象。此流程图作为梗概,便于加强记忆和理解,新手或无基础的有个印象即可。等跟随本文走通一遍,在回过头看这个图,或许会有收获

spring Bean创建方法是什么

源码走一遍bean的定义这是我的bean目录结构,只是做一个例子

spring Bean创建方法是什么

获取核心容器对象,bean最后都会放在此容器对象中

    *   ApplicationContext的三个实现类    *   ClassPathXmlApplicationContext  它可以加载类路径下的配置文件,要求必须在类路径下    *   FileSystemXmlApplicationContext  可以加载任意路径下的配置文件,必须有访问权限    *   AnnotationConfigApplicationContext 用于读取注解创建容器的        这里我用ClassPathXmlApplicationContext来做演示       public class MyTest {    public static void main(String[] args) {        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");    }}

快速开始

建议用IDEA的debug模式来观察Spring的IOC过程

spring Bean创建方法是什么

进入到此类的构造方法中

spring Bean创建方法是什么

查看setConfigLocations,就是将配置文件加载到configLocations里去

spring Bean创建方法是什么

向下执行,查看refresh()

spring Bean创建方法是什么

this.prepareRefresh(): 此方法是准备工作,大家感兴趣可以点进去看一下,可以看到里面是获取时间,获取环境信息的一些设置。

this.obtainFreshBeanFactory(): 这一步是创建beanFactory,并且读取Bean的信息,源码注释中还有写到

// Tell the subclass to refresh the internal bean factory.会告诉子类去刷新内部bean工厂

this.refreshBeanFactory:

 * This implementation performs an actual refresh of this context's underlying * bean factory, shutting down the previous bean factory (if any) and * initializing a fresh bean factory for the next phase of the context's lifecycle.  这个实现类的方法会刷新容器中的beanFactory,关闭之前存在的并且初始化新的beanFactory

spring Bean创建方法是什么

利用this.createBeanFactory() 创建了一个beanFactory,类型为DefaultListableBeanFactory

这个类接着往下走:this.loadBeanDefinitions(beanFactory);

 * Load bean definitions into the given bean factory, typically through * delegating to one or more bean definition readers.  这个方法会将beandefinitionsReader读取到的bean definitions放入bean工厂,我们以上提出的三种 注入方式都会走到这里,将bean信息丢进去

返回上述 refresh()

this.prepareBeanFactory(beanFactory); 设置和忽略一些对象值

this.postProcessBeanFactory(beanFactory); 空方法可自定义扩展

this.invokeBeanFactoryPostProcessors(beanFactory);

 * Instantiate and invoke all registered BeanFactoryPostProcessor beans, * respecting explicit order if given. * <p>Must be called before singleton instantiation.  实例化所有beanFactory组件

registerBeanPostProcessors(beanFactory);

Instantiate and register all BeanPostProcessor beans,  //先注册再调用

initApplicationEventMulticaster(); 观察者模式监听器, 监听组件的相关状态,并决定相关调用方法。

finishBeanFactoryInitialization(beanFactory); 重要!!

 * Finish the initialization of this context's bean factory, * initializing all remaining singleton beans.  完成了容器bean factory的初始化,并且初始化其他的bean单例对象

beanFactory.preInstantiateSingletons(); 实例化方法

此方法最后this.getBean(beanName)

继续

spring Bean创建方法是什么

Return an instance, which may be shared or independent, of the specified bean.注释已经很清楚了,此方法会返回一个实例,就是我们的bean对象

spring Bean创建方法是什么

进入到createBean方法中

spring Bean创建方法是什么

继续进入![image-20200714221630608](/Users/hjj/Library/Application Support/typora-user-images/image-20200714221630608.png)

继续进入

spring Bean创建方法是什么

spring Bean创建方法是什么

Instantiate the given bean using its default constructor.这个方法注释说明了实例化对象是用构造器完成的

继续看他如何构造的

spring Bean创建方法是什么

spring Bean创建方法是什么

spring Bean创建方法是什么

ca 就是Constructor,从这里我们基本可以看出容器内,bean对象的实例化是利用反射的基本原理,获取类构造器,然后newInstance来实现的

以上就是bean对象实例化的基本过程,下面是实例化完成后的初始化过程

回到这里,实例化完成后

spring Bean创建方法是什么

spring Bean创建方法是什么

注释说明了在populateBean完成bean的初始化

继续

spring Bean创建方法是什么

会看到在此方法里会调用前置和后置处理器来初始化Bean

到此,相信大家对“spring Bean创建方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

spring Bean创建方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

spring Bean创建方法是什么

本篇内容主要讲解“spring Bean创建方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring Bean创建方法是什么”吧!bean创建的流程图写在前面:建议大家一定要自己用实
2023-06-26

spring调用bean的方法是什么

Spring调用Bean的方法通常有以下几种方式:通过XML配置文件进行配置,在配置文件中声明Bean并指定其相应的属性和方法。通过注解方式,在Bean类中使用注解(例如@Component、@Service、@Repository、@C
spring调用bean的方法是什么
2024-04-09

Spring创建bean的方式有哪些

这篇文章主要讲解了“Spring创建bean的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring创建bean的方式有哪些”吧!环境Ubuntu 22.04IntelliJ
2023-07-02

spring中bean的初始化方法是什么

在Spring中,bean的初始化可以通过两种方式来完成:使用@Bean注解的initMethod属性或者实现InitializingBean接口。1. 使用@Bean注解的initMethod属性:可以在@Bean注解中通过initMet
2023-09-21

spring重新加载bean的方法是什么

Spring重新加载bean的方法有以下几种:1. 使用Spring的热部署功能:在开发环境中,可以配置Spring Boot的devtools模块,该模块支持热部署,当代码发生变化时自动重新加载bean。2. 使用Spring的刷新作用域
2023-10-10

Spring中bean集合注入的方法是什么

这篇文章主要讲解了“Spring中bean集合注入的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring中bean集合注入的方法是什么”吧!Spring作为项目中不可缺少的底
2023-07-02

Java Spring Cloud客户服务创建方法是什么

这篇文章主要讲解了“Java Spring Cloud客户服务创建方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java Spring Cloud客户服务创建方法是什么”吧!新建一
2023-06-05

Spring Bean中Bean的注册是什么

这篇文章主要介绍“Spring Bean中Bean的注册是什么”,在日常操作中,相信很多人在Spring Bean中Bean的注册是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring Bean中B
2023-06-29

Spring IOC容器FactoryBean工厂Bean怎么创建

本篇内容主要讲解“Spring IOC容器FactoryBean工厂Bean怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring IOC容器FactoryBean工厂Bean怎么创
2023-06-30

Spring Bean的定义概念和使用方法是什么

本篇内容介绍了“Spring Bean的定义概念和使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义Spring bean 对
2023-07-06

php创建类方法是什么

在php中,可以使用class关键字加类名的方式创建一个类,然后用大括号“{}”将在类体中定义的属性和方法包裹起来;语法格式“[修饰类的关键字] class 类名{ 类的属性和方法;}”。
2016-05-17

Spring中Bean初始化和销毁的方法是什么

今天小编给大家分享一下Spring中Bean初始化和销毁的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sprin
2023-07-06

Spring创建bean的几种方式及使用场景

本文主要介绍了Spring创建bean的几种方式及使用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-18

Spring单元测试控制Bean注入的方法是什么

本篇内容介绍了“Spring单元测试控制Bean注入的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通过xml文件进行注入在配置文
2023-07-05

Spring中的bean概念是什么

这篇文章将为大家详细讲解有关Spring中的bean概念是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Bean是Spring框架中最核心的两个概念之一(另一个是面向切面编程AOP)。1 定义Spri
2023-06-29

weblogic创建域的方法是什么

WebLogic创建域的方法有两种:命令行方式和图形界面方式。1. 命令行方式:a. 打开命令行终端。b. 切换到WebLogic安装目录的“bin”文件夹。c. 运行以下命令创建域:```./config.cmd(Windows)./co
2023-09-01

clickhouse创建表的方法是什么

在ClickHouse中,可以使用SQL语句来创建表。以下是一个简单的示例:CREATE TABLE my_table (id UInt32,name String,age UInt8) ENGINE = MergeTree()ORD
clickhouse创建表的方法是什么
2024-03-01

pytorch创建tensor的方法是什么

在PyTorch中,可以通过以下几种方法来创建tensor:使用torch.Tensor()函数创建一个空的tensor:tensor = torch.Tensor()使用torch.tensor()函数根据给定的数据创建一个tensor
pytorch创建tensor的方法是什么
2024-04-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录