| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 介绍下Spring的核心接口、容器中Bean的实例化 -> 正文阅读 |
|
[Java知识库]介绍下Spring的核心接口、容器中Bean的实例化 |
目录 Spring的核心接口ApplicationContext接口继承了BeanFactory并且提供了加载资源文件的方法 ApplicationContext其实就是一个容器,ApplicationContext的实例其实就是容器对象,这个容器对象在实例化过程中其实就是容器初始化的过程 ClasspathXmlApplicationContext加载Classpath下的xml格式的配置文件,初始化这样的实例 FileSystemXmlApplicationContext加载文件路径下的xml文件 AnnotationConfigApplicationContext注解配置 SpringMVC: WebApplicationContext 这个还没有引入对应的依赖所以暂时看不到 ? ? BeanFactory接口生产bean,生产全部bean,容器。ApplicationContext接口继承了BeanFactory接口 Spring容器中Bean的实例化Spring的核心就是控制反转,它要控制实例的生成(实例化) 实例化主要有以下几种方式 构造方法无参构造方法默认使用的就是无参构造方法,最常用的 先贴出来xml文件,其中如果有参构造方法把无参构造方法覆盖掉的话,就需要constructor-arg标签来告知,其中的name标签就是对应的有参构造方法的参数名,而无参构造方法想要给属性做赋值就只需要property子标签即可 有参构造方法?测试后我们发现 ? 工厂静态工厂工厂里的生产方法是静态方法 ?注册组件 ? 实例工厂工厂里的生产方法不是静态方法 组件注册 我们需要额外注册组件,并且要告诉其工厂是谁 工厂要使用的方法是什么 ? 测试类 ?这里我们发现虽然都是User 但他们不是同一个组件 ?注意:如果直接去取的话或发生异常 此时加个id再去取出就可以了,?方法二:可以使用Map方式,按照类型去取出User组件 ? 静态工厂和实例工厂在整合一些已有的工具类的时候,工具类有一些静态方法返回某一些实例而后面要去使用这些实例,就需要使用静态工厂方法注册组件 FactoryBean→使用工厂方法FactoryBean实际上是个接口,我们看下它的代码 ?getObject()就是生产方法,其实就是返回一个实例
? ?注册组件 我们的目的是想要通过FactoryBean获取到一个User类型的组件 ?通过FactoryBean注册的组件类型:和getObject方法的返回值是相关的,简单来讲就是Spring再检查注册组件的时候会检查组件有没有实现FactoryBean接口如果有实现就会去找到里面的getObject方法,把getObject返回的实例注册为容器中的组件 面试题: BeanFactory和FactoryBean区别 都可以注册组件 BeanFactory:生产的是全部组件 FactoryBean:注册的特定类型的组件 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:25:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |