当前播放: 22 | Spring IoC依赖查找:依赖注入还不够吗?依赖查找存在的价值几何?
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:Spring Framework总览 (12讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 课前准备:学习三件套(工具、代码与大脑)
免费
04 | 特性总览:核心特性、数据存储、Web技术、框架整合与测试
免费
05 | Spring版本特性:Spring各个版本引入了哪些新特性?
免费
06 | Spring模块化设计:Spring功能特性如何在不同模块中组织?
07 | Java语言特性运用:各种Java语法特性是怎样被Spring各种版本巧妙运用的?
08 | JDK API实践:Spring怎样取舍Java I/O、集合、反射、动态代理等API的使用?
09 | Java EE API整合:为什么Spring要与“笨重”的Java EE共舞?
10 | Spring编程模型:Spring实现了哪些编程模型?
11 | Spring核心价值:我们能从Spring Framework中学到哪些经验和教训呢?
12 | 面试题精选
第二章:重新认识IoC (9讲)
13 | IoC发展简介:你可能对IoC有些误会?
14 | IoC主要实现策略:面试官总问IoC和DI的区别,他真的理解吗?
15 | IoC容器的职责:IoC除了依赖注入,还涵盖哪些职责呢?
16 | 除了Spring,还有其它的IOC容器实现吗?
17 | 传统IoC容器实现:JavaBeans也是IoC容器吗?
18 | 轻量级IoC容器:如何界定IoC容器的“轻重”?
19 | 依赖查找 VS. 依赖注入:为什么Spring总会强调后者,而选择性忽视前者?
20 | 构造器注入 VS. Setter 注入:为什么Spring官方文档的解读会与作者的初心出现偏差?
21 | 面试题精选
第三章:Spring IoC容器概述 (9讲)
22 | Spring IoC依赖查找:依赖注入还不够吗?依赖查找存在的价值几何?
23 | Spring IoC依赖注入:Spring提供了哪些依赖注入模式和类型呢?
24 | Spring IoC依赖来源:依赖注入和查找的对象来自于哪里?
25 | Spring IoC配置元信息:Spring IoC有哪些配置元信息?它们的进化过程是怎样的?
26 | Spring IoC容器:BeanFactory和ApplicationContext谁才是Spring IoC容器?
27 | Spring应用上下文:ApplicationContext除了IoC容器角色,还提供哪些特性?
28 | 使用Spring IoC容器:选BeanFactory还是ApplicationContext?
29 | Spring IoC容器生命周期:IoC容器启停过程中发生了什么?
30 | 面试题精选
第四章:Spring Bean基础 (11讲)
31 | 定义Bean:什么是BeanDefinition?
32 | BeanDefinition元信息:除了Bean名称和类名,还有哪些Bean元信息值得关注?
33 | 命名Spring Bean:id和name属性命名Bean,哪个更好?
34 | Spring Bean的别名:为什么命名Bean还需要别名?
35 | 注册Spring Bean:如何将BeanDefinition注册到IoC容器?
36 | 实例化Spring Bean:Bean实例化的姿势有多少种?
37 | 初始化Spring Bean:Bean初始化有哪些方式?
38 | 延迟初始化Spring Bean:延迟初始化的Bean会影响依赖注入吗?
39 | 销毁Spring Bean: 销毁Bean的基本操作有哪些?
40 | 回收Spring Bean:Spring IoC容器管理的Bean能够被垃圾回收吗?
41 | 面试题精选
第五章:Spring IoC依赖查找(Dependency Lookup) (9讲)
42 | 依赖查找的今世前生:Spring IoC容器从Java标准中学到了什么?
43 | 单一类型依赖查找:如何查找已知名称或类型的Bean对象?
44 | 集合类型依赖查找:如何查找已知类型多个Bean集合?
45 | 层次性依赖查找:依赖查找也有双亲委派?
46 | 延迟依赖查找:非延迟初始化Bean也能实现延迟查找?
47 | 安全依赖查找
48 | 内建可查找的依赖:哪些Spring IoC容器内建依赖可供查找?
49 | 依赖查找中的经典异常:Bean找不到?Bean不是唯一的?Bean创建失败?
50 | 面试题精选
第六章:Spring IoC依赖注入(Dependency Injection) (20讲)
51 | 依赖注入的模式和类型:Spring提供了哪些依赖注入的模式和类型?
52 | 自动绑定(Autowiring):为什么Spring会引入Autowiring?
53 | 自动绑定(Autowiring)模式:各种自动绑定模式的使用场景是什么?
54 | 自动绑定(Autowiring)限制和不足:如何理解和挖掘官方文档中深层次的含义?
55 | Setter方法依赖注入:Setter注入的原理是什么?
56 | 构造器依赖注入:官方为什么推荐使用构造器注入?
57 | 字段注入:为什么Spring官方文档没有单独列举这种注入方式?
58 | 方法注入:方法注入是@Autowired专利吗?
59 | 接口回调注入:回调注入的使用场景和限制有哪些?
60 | 依赖注入类型选择:各种依赖注入有什么样的使用场景?
61 | 基础类型注入:String和Java原生类型也能注入Bean的属性,它们算依赖注入吗?
62 | 集合类型注入:注入Collection和Map类型的依赖区别?还支持哪些集合类型?
63 | 限定注入:如何限定Bean名称注入?如何实现Bean逻辑分组注入?
64 | 延迟依赖注入:如何实现延迟执行依赖注入?与延迟依赖查找是类似的吗?
65 | 依赖处理过程:依赖处理时会发生什么?其中与依赖查找的差异在哪?
66 | @Autowired注入:@Autowired注入的规则和原理有哪些?
67 | JSR-330 @Inject注入:@Inject与@Autowired的注入原理有怎样的联系?
68 | Java通用注解注入原理:Spring是如何实现@Resource和@EJB等注解注入的?
69 | 自定义依赖注入注解:如何最简化实现自定义依赖注入注解?
70 | 面试题精选
第七章:Spring IoC依赖来源(Dependency Sources) (8讲)
71 | 依赖查找的来源:除容器内建和自定义Spring Bean之外,还有其他来源提供依赖查找吗?
72 | 依赖注入的来源:难道依赖注入的来源与依赖查找的不同吗?
73 | Spring容器管理和游离对象:为什么会有管理对象和游离对象?
74 | Spring Bean Definition作为依赖来源:Spring Bean的来源
75 | 单例对象作为依赖来源:单体对象与普通Spring Bean存在哪些差异?
76 | 非Spring容器管理对象作为依赖来源:如何理解ResolvableDependency?
77 | 外部化配置作为依赖来源:@Value是如何将外部化配置注入Spring Bean的?
78 | 面试题精选
第八章:Spring Bean作用域(Scopes) (9讲)
79 | Spring Bean作用域:为什么Spring Bean需要多种作用域?
80 | "singleton" Bean作用域:单例Bean在当前Spring应用真是唯一的吗?
81 | "prototype" Bean作用域:原型Bean在哪些场景下会创建新的实例?
82 | "request" Bean作用域:request Bean会在每次HTTP请求创建新的实例吗?
83 | "session" Bean作用域:session Bean在Spring MVC场景下存在哪些局限性?
84 | "application" Bean作用域:application Bean是否真的有必要?
85 | 自定义Bean作用域:设计Bean作用域应该注意哪些原则?
86 | 课外资料:Spring Cloud RefreshScope是如何控制Bean的动态刷新?
87 | 面试题精选
第九章:Spring Bean生命周期(Bean Lifecycle) (18讲)
88 | Spring Bean 元信息配置阶段:BeanDefinition配置与扩展
89 | Spring Bean 元信息解析阶段:BeanDefinition的解析
90 | Spring Bean 注册阶段:BeanDefinition与单体Bean注册
91 | Spring BeanDefinition合并阶段:BeanDefinition合并过程是怎样出现的?
92 | Spring Bean Class加载阶段:Bean ClassLoader能够被替换吗?
93 | Spring Bean实例化前阶段:Bean的实例化能否被绕开?
94 | Spring Bean实例化阶段:Bean实例是通过Java反射创建吗?
95 | Spring Bean实例化后阶段:Bean实例化后是否一定被是使用吗?
96 | Spring Bean属性赋值前阶段:配置后的PropertyValues还有机会修改吗?
97 | Aware接口回调阶段:众多Aware接口回调的顺序是安排的?
98 | Spring Bean初始化前阶段:BeanPostProcessor
99 | Spring Bean初始化阶段:@PostConstruct、InitializingBean以及自定义方法
100 | Spring Bean初始化后阶段:BeanPostProcessor
101 | Spring Bean初始化完成阶段:SmartInitializingSingleton
102 | Spring Bean销毁前阶段:DestructionAwareBeanPostProcessor用在怎样的场景?
103 | Spring Bean销毁阶段:@PreDestroy、DisposableBean以及自定义方法
104 | Spring Bean垃圾收集(GC):何时需要GC Spring Bean?
105 | 面试题精选
第十章:Spring配置元信息(Configuration Metadata) (17讲)
106 | Spring配置元信息:Spring存在哪些配置元信息?它们分别用在什么场景?
107 | Spring Bean配置元信息:BeanDefinition
108 | Spring Bean属性元信息:PropertyValues
109 | Spring容器配置元信息
110 | 基于XML资源装载Spring Bean配置元信息
111 | 基于Properties资源装载Spring Bean配置元信息:为什么Spring官方不推荐?
112 | 基于Java注解装载Spring Bean配置元信息
113 | Spring Bean配置元信息底层实现之XML资源
114 | Spring Bean配置元信息底层实现之Properties资源
115 | Spring Bean配置元信息底层实现之Java注解
116 | 基于XML资源装载Spring IoC容器配置元信息
117 | 基于Java注解装载Spring IoC容器配置元信息
118 | 基于Extensible XML authoring 扩展Spring XML元素
119 | Extensible XML authoring扩展原理
120 | 基于Properties资源装载外部化配置
121 | 基于YAML资源装载外部化配置
122 | 面试题
第十一章:Spring资源管理(Resources) (11讲)
123 | 引入动机:为什么Spring不使用Java标准资源管理,而选择重新发明轮子?
124 | Java标准资源管理:Java URL资源管理存在哪些潜规则?
125 | Spring资源接口:Resource接口有哪些语义?它是否“借鉴”了SUN的实现呢?
126 | Spring内建Resource实现:Spring框架提供了多少种内建的Resource实现呢?
127 | Spring Resource接口扩展:Resource能否支持写入以及字符集编码?
128 | Spring资源加载器:为什么说Spring应用上下文也是一种Spring资源加载器?
129 | Spring通配路径资源加载器:如何理解路径通配Ant模式?
130 | Spring通配路径模式扩展:如何扩展路径匹配的规则?
131 | 依赖注入Spring Resource:如何在XML和Java注解场景注入Resource对象?
132 | 依赖注入ResourceLoader:除了ResourceLoaderAware回调注入,还有哪些注入方法?
133 | 面试题精选
第十二章:Spring国际化(i18n) (9讲)
134 | Spring国际化使用场景
135 | Spring国际化接口:MessageSource不是技术的创造者,只是技术的搬运工?
136 | 层次性MessageSource:双亲委派不是ClassLoader的专利吗?
137 | Java国际化标准实现:ResourceBundle潜规则多?
138 | Java文本格式化:MessageFormat脱离Spring场景,能力更强大?
139 | MessageSource开箱即用实现:ResourceBundle +MessageFormat组合拳?
140 | MessageSource内建依赖:到底“我”是谁?
141 | 课外资料:SpringBoot为什么要新建MessageSource Bean?
142 | 面试题精选
第十三章:Spring校验(Validation) (7讲)
143 | Spring校验使用场景:为什么Validator并不只是Bean的校验?
144 | Validator接口设计:画虎不成反类犬?
145 | Errors接口设计:复杂得没有办法理解?
146 | Errors文案来源:Spring国际化充当临时工?
147 | 自定义Validator:为什么说Validator容易实现,却难以维护?
148 | Validator的救赎:如果没有Bean Validation,Validator将会在哪里吗?
149 | 面试题精选
第十四章:Spring数据绑定(Data Binding) (9讲)
150 | Spring数据绑定使用场景:为什么官方文档描述一笔带过?
151 | Spring数据绑定组件:DataBinder
152 | DataBinder绑定元数据:PropertyValues不是Spring Bean属性元信息吗?
153 | DataBinder绑定控制参数:ignoreUnknownFields和ignoreInvalidFields有什么作用?
154 | Spring底层JavaBeans替换实现:BeanWrapper源于JavaBeans而高于JavaBeans?
155 | BeanWrapper的使用场景:Spring数据绑定只是副业?
156 | 课外资料:标准JavaBeans是如何操作属性的
157 | DataBinder数据校验:又见Validator
158 | 面试题精选
第十五章:Spring类型转换(Type Conversion) (15讲)
159 | Spring类型转换的实现:Spring提供了哪几种类型转换的实现?
160 | 使用场景:Spring类型转换各自的使用场景以及发展脉络是怎样的?
161 | 基于JavaBeans接口的类型转换:Spring是如何扩展PropertyEditor接口实现类型转换的?
162 | Spring内建PropertyEditor扩展:哪些常见类型被Spring内建PropertyEditor实现?
163 | 自定义PropertyEditor扩展:不尝试怎么知道它好不好用?
164 | SpringPropertyEditor的设计缺陷:为什么基于PropertyEditor扩展并不适合作为类型转换?
165 | Spring 3通用类型转换接口:为什么Converter接口设计比PropertyEditor更合理?
166 | Spring内建类型转换器:Spring的内建类型转换器到底有多丰富?
167 | Converter接口的局限性:哪种类型转换场景Converter无法满足?有什么应对之策?
168 | GenericConverter接口:为什么GenericConverter比Converter更通用?
169 | 优化GenericConverter接口:为什么GenericConverter需要补充条件判断?
170 | 扩展Spring类型转换器:为什么最终注册的都是ConditionalGenericConverter?
171 | 统一类型转换服务:ConversionService足够通用吗?
172 | ConversionService作为依赖-能够同时作为依赖查找和依赖注入的来源吗?
173 | 面试题精选
第十六章:Spring泛型处理(Generic Resolution) (8讲)
174 | Java泛型基础:泛型参数信息在擦写后还会存在吗?
175 | Java 5类型接口-Type:Java类型到底是Type还是Class?
176 | Spring泛型类型辅助类:GenericTypeResolver
177 | Spring泛型集合类型辅助类:GenericCollectionTypeResolver
178 | Spring方法参数封装-MethodParameter:不仅仅是方法参数
179 | Spring 4.2泛型优化实现-ResolvableType
180 | ResolvableType的局限性:形式比人强?
181 | 面试题精选
第十七章:Spring事件(Events) (20讲)
182 | Java事件/监听器编程模型:为什么Java中没有提供标准实现?
183 | 面向接口的事件/监听器设计模式:单事件监听和多事件监听怎么选?
184 | 面向注解的事件/监听器设计模式:便利也会带来伤害?
185 | Spring标准事件-ApplicationEvent:为什么不用EventObject?
186 | 基于接口的Spring事件监听器:ApplicationListener为什么选择单事件监听模式?
187 | 基于注解的Spring事件监听器:@EventListener有哪些潜在规则?
188 | 注册Spring ApplicationListener:直接注册和间接注册有哪些差异?
189 | Spring事件发布器:Spring 4.2给ApplicationEventPublisher带来哪些变化?
190 | Spring 层次性上下文事件传播:这是一个Feature还是一个Bug?
191 | Spring内建事件(Built-in Events):为什么ContextStartedEvent和 ContextStoppedEvent是鸡肋事件? - 深入剖析源码,掌握核心编程特性
192 | Spring 4.2 Payload事件:为什么说PayloadApplicationEvent并非一个良好的设计?
193 | 自定义Spring事件:自定义事件业务用得上吗?
194 | 依赖注入ApplicationEventPublisher:事件推送还会引起Bug?
195 | 依赖查找ApplicationEventPublisher:ApplicationEventPublisher从何而来?
196 | ApplicationEventPublisher底层实现:ApplicationEventMulticaster也是Java Observable的延伸?
197 | 同步和异步Spring事件广播:Spring对J.U.C Executor接口的理解不够?
198 | Spring 4.1事件异常处理:ErrorHandler使用有怎样的限制?
199 | Spring事件/监听器实现原理:面向接口和注解的事件/监听器实现有区别吗?
200 | 课外资料:Spring Boot和Spring Cloud事件也是Spring事件?
201 | 面试题精选
第十八章:Spring注解(Annotations) (12讲)
202 | Spring注解驱动编程发展历程
203 | Spring核心注解场景分类
204 | Spring注解编程模型
205 | Spring元注解(Meta-Annotations)
206 | Spring模式注解(Stereotype Annotations)
207 | Spring组合注解(Composed Annotations)
208 | Spring注解属性别名(Attribute Aliases)
209 | Spring注解属性覆盖(Attribute Overrides)
210 | Spring @Enable模块驱动
211 | Spring条件注解
212 | 课外资料:Spring Boot和Spring Cloud是怎样在Spring注解内核上扩展的?
213 | 面试题精选
第十九章:Spring Environment抽象(Environment Abstraction) (16讲)
214 | 理解Spring Environment抽象
215 | Spring Environment接口使用场景
216 | Environment占位符处理
217 | 理解条件配置Spring Profiles
218 | Spring 4重构@Profile
219 | 依赖注入Environment
220 | 依赖查找Environment
221 | 依赖注入@Value
222 | Spring类型转换在Environment中的运用
223 | Spring类型转换在@Value中的运用
224 | Spring配置属性源PropertySource
225 | Spring內建的配置属性源
226 | 基于注解扩展Spring配置属性源
227 | 基于API扩展Spring外部化配置属性源
228 | 课外资料:Spring 4.1测试配置属性源-@TestPropertySource
229 | 面试题精选
第二十章:Spring应用上下文生命周期(Container Lifecycle) (21讲)
230 | Spring应用上下文启动准备阶段
231 | BeanFactory创建阶段
232 | BeanFactory准备阶段
233 | BeanFactory后置处理阶段
234 | BeanFactory注册BeanpostProcessor阶段
235 | 初始化内建Bean:MessageSource
236 | 初始化内建Bean:Spring事件广播器
237 | Spring应用上下文刷新阶段
238 | Spring事件监听器注册阶段
239 | BeanFactory初始化完成阶段
240 | Spring应用上下刷新完成阶段
241 | Spring应用上下文启动阶段
242 | Spring应用上下文停止阶段
243 | Spring应用上下文关闭阶段
244 | 面试题精选
245 | 结束语
加餐1:为什么说ObjectFactory提供的是延迟依赖查找?
加餐2 | 依赖查找(注入)的Bean会被缓存吗?
加餐3 | @Bean的处理流程是怎样的?
加餐4 | BeanFactory如何处理循环依赖的?
加餐5 | MyBatis与Spring Framework是如何集成的?
22 | Spring IoC依赖查找:依赖注入还不够吗?依赖查找存在的价值几何?

22 | Spring IoC依赖查找:依赖注入还不够吗?依赖查找存在的价值几何?

小马哥
《Spring Boot 编程思想》作者
全集15111
新人首单 ¥69.9 原价 ¥299
21
本节摘要

课件和 Demo 地址
https://github.com/geektime-geekbang/geekbang-lessons

如果你无法从 GitHub 正常下载课件及 Demo,请打开下方链接进行下载:
https://gitee.com/geektime-geekbang/geekbang-lessons

展开
登录 后留言

精选留言(39)

  • 阿土
    老师,实时查找跟延迟查找的区别、使用场景这些都没有讲,感觉还是蒙的

    作者回复: 延迟依赖查找主要用于获取 BeanFactory 后,不马上获取相关的 Bean,比如在 BeanFactoryPostProcessor 接口中获取 ConfigurableListableBeanFactory 时,不马上获取,降低 Bean 过早初始化的情况

    2020-01-15
    1
    12
  • 大大大熊myeh
    关于[三产]同学的疑惑,我的理解是:ObjectFactory的延时查找可以用于自定义的创建实例策略,通过实现ObjectFactory接口。小马哥所举的ObjectFactoryCreatingFactoryBean指定了ObjectFactory返回的的对象是注入的user对象,所以看起来跟实时查找是一样的。举个例子,我可以在实现ObjectFactory接口的类中自定义getObject方法返回new User,这样每次通过ObjectFactory返回的就是一个新的实例。

    作者回复: ObjectFactory 对象并不是直接返回了实际的 Bean,而是一个 Bean 的查找代理。当得到 ObjectFactory 对象时,相当于 Bean 没有被创建,只有当 getObject() 方法时,才会触发 Bean 实例化等生命周期。

    2020-01-08
    2
    8
  • 十块钱
    xml文件为什么放在了meat inf下面有什么好处吗?记得之前是直接放在resources下面的

    作者回复: 我在视频中提到了一句话, 通常配置文件最好放在元数据目录,即 META-INF

    2020-01-04
    2
    6
  • 吃花的鱼
    ObjectFactoryCreatingFactoryBean ob = (ObjectFactoryCreatingFactoryBean) beanFactory.getBean("objectFactoryCreatingFactoryBean"); 这种根据名称查找编译直接报错,说类型转换错误。而根据类型查找确可以正确编译ObjectFactoryCreatingFactoryBean ob = (ObjectFactoryCreatingFactoryBean) beanFactory.getBean(ObjectFactoryCreatingFactoryBean.class); 这一点没搞懂,希望老师指点一下

    作者回复: 这个是 BeanFactory 实现决定,当 name 关联的 Bean 为 FactoryBean,实际返回的对象是 FactoryBean#getObject(),请参考 org.springframework.beans.factory.support.AbstractBeanFactory#getObjectForBeanInstance 方法。

    2020-01-19
    5
  • william
    小马哥,能讲讲factoryBean与beanFactory的区别吗?是只在于factoryBean在通过getObject()获取对象时都是新创建的吗?

    作者回复: FactoryBean 是一种特殊的 Bean,需要注册到 IoC 容器,通过容器 getBean 获取 FactoryBean#getObject() 方法的内容,而 BeanFactory#getBean 则是依赖查找,如果 Bean 没有初始化,那么将从底层查找或构建。

    2020-01-10
    5
  • jack Wong
    之前看了源码,发现beanFactory.getBean("objectFactory")的是ObjectFactoryCreatingFactoryBean的内部类,这个内部类继承了ObjectFactory

    作者回复: 是这样的~

    2020-02-23
    4
  • lcadzy
    引用小马哥的回答: : ObjectFactory 对象并不是直接返回了实际的 Bean,而是一个 Bean 的查找代理。当得到 ObjectFactory 对象时,相当于 Bean 没有被创建,只有当 getObject() 方法时,才会触发 Bean 实例化等生命周期。

    作者回复: 是的,所以有延迟效果

    2020-03-21
    3
  • Geek_18858f
    老师先是讲了BeanFactory然后讲了ObjectFactory, 18:48的时候突然讲到“如果这里改成FactoryBean” ??? FactoryBean之前讲过用过吗?感觉很突然,只能慢慢先看下去了。

    作者回复: 嗯,我这里提到的 FactoryBean,你可以参考一下第五十节:https://time.geekbang.org/course/detail/265-189606,里面有详细提到其中区别

    2020-01-10
    1
    3
  • Jim
    看到大部分小伙伴 对 懒加载 都有困惑 其实自己 debug 到
    org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean createInstance这个方法里面就明白了
    这里只是获取到 beanFactory 引用(老师说的代理)。懒加载的应用场景,我的理解是用在一些模块的数据初始化的时候使用。

    作者回复: Bingo~

    2020-06-10
    2
  • torchlight
    老师 我想问下 Map<String,User> users=(Map)listableBeanFactory.getBeansWithAnnotation(Super.class);
    这个强制转换怎么理解的,users这个对象已经转换成Map<String,Object>了吗?

    作者回复: 并非如此,实际上这是 Java 泛型擦写的缘故,底层都是 Map<Object,Object>

    2020-04-22
    2
  • 三产
    没有明白实时查找与延时查找相比,延时查找存在的必要性,因为延时查找并不是在查找时才会初始化 bean,没太明白这样做延时查找有什么意义,小马哥能给解惑下么?

    作者回复: 可以参考一下第五十节:https://time.geekbang.org/course/detail/265-189606,里面有详细提到其中区别

    2020-01-06
    1
    2
  • 马晨阳
    小马哥有个问题想问一下,我理解的延迟查找应该是获取了ObjectFactory后user并没有被初始化,而是在ObjectFactory获取对象的时候User才会被加载,所以我想通过在User的无参构造里打印一下无参构造的调用时间来证明我的想法,但是在获取beanfactory的时候无参构造就被调用了,不是说beanFactory在getbean之前是不实例化bean的吗?到此我就眩晕了,马哥能给解答一下吗?

    作者回复: ObjectFactory 仅是一个操作对象,当依赖注入或依赖查找该 ObjectFactory 对象时,实际内嵌的 Bean 需要 getObject() 方法来获取。

    2020-04-23
    2
    1
  • Coding_Monkey
    一楼吗

    作者回复: 恭喜~

    2020-01-03
    2
    1
  • Geek_b23ef7
    收益匪浅啊。小马哥,spring security和事务,aop哪里有讲

    作者回复: 哈哈,AOP 在下个 Spring 课程~

    2020-08-16
  • kevin
    ObjectFactory.getBean("user") 和 beanFactory.getBean("user") 获取到的是同一个对象吗?如果是同一个,感觉objectFactory也没有起到延迟的作用

    作者回复: ObjectFactory 是按照需要查找 Bean,而 BeanFactory 则是及时查找 Bean

    2020-07-28
  • 梦倚栏杆
    老师你的IDEA是哪个版本的呀,我的IDEAcopy资源时没有source相关的提示呀

    作者回复: IDEA 2020 版本开始就支持了

    2020-07-18
  • 刘大人
    nice 学到了
    Bean名称查找 直接查找 间接查找(先返回beanFactory引用,调用后放回具体对象)
    Bean 类型查找 指定对象类型 返回单个 或 集合
    注解查找 单个 或者 集合

    作者回复: ������

    2020-07-09
  • 大大大熊myeh
    小马哥好,这是我第二遍看这个视频,理解了很多东西。但是还有一个问题,在ppt中您列出了ioc依赖查找可以根据Java注解赖查找单个Bean对象和集合Bean对象,但在课后有同学的问题中您又说Spring官方没有提供根据注解查找单个Bean对象的方法,那是不是说您的ppt其实是有问题的?

    作者回复: 对的,从接口上来看,的确没有通过注解查找的单个对象。

    2020-06-29
  • 不工
    老师,能通过打印或者debug的方式来直观证明bean获取的 “延时” 和 “实时” 吗

    作者回复: 通常是不能的

    2020-06-07
    1
  • 虞山码农
    视频中小马哥说 ObjectFactoryCreatingFactoryBean是ObjectFactory<T>这个接口的实现,如果我不知道有ObjectFactoryCreatingFactoryBean这个类 要怎么查找呢?

    作者回复: 如果没有的话,可以选择注入 @Autowired ObjectProvider<T> objectProvider 这样的方式。

    2020-06-04
收起评论
看过的人还看
数据结构与算法之美

王争  前Google工程师

80讲 | 90295 人已学习

新人首单 ¥29.9 原价 ¥129
Java核心技术面试精讲

杨晓峰  前Oracle首席工程师

44讲 | 47476 人已学习

新人首单 ¥19.9 原价 ¥99
玩转Spring全家桶

丁雪丰  平安壹钱包高级架构师,《Spring Boot实战》《Spring攻略》译者,InfoQ社区编辑

123讲 | 30965 人已学习

新人首单 ¥29.9 原价 ¥129
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

49讲 | 58894 人已学习

新人首单 ¥29.9 原价 ¥129