打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
spring源码分析
spring容器的核心IOC和Aop,其中ioc控制反转,就是spring容器帮助程序员创建对象以及维护对象之间的依赖关系,
DI依赖注入就是其中非常重要的一环,我们平常使用比较多的就是set注入、构造器注入,使用@Autowired、@Resource注解注入等,
下面我们就分析一下spring源码是怎么实现的。
一:set注入
准备环境:
在spring-context.xml中配置student的bean信息
1
2
3
4
<bean id="student" class="com.hello.model.Student">
<property name="height" value="100"></property>
<property name="weight" value="300"></property>
</bean>
运行结果:
下面从源码来看一下set注入:
在解析spring-context.xml的时候,解析bean元素,会解析到子元素property,这个部分在默认标签解析那节分析过,然后把属性值封装
到MultablePropertyValues对象上,放到BeanDefinition对象上面缓存
进入polulateBean方法中:
从BeanDefinition对象中拿到PropertyValues属性:
应用属性值:
语言方法
22117tFThv8vUe
BScDb抖音练习生请开播
38832009-09-10 23:10:09
刚才我们使用的是set注入,直接注入的字符串,如果使用ref,注入对象,会如何处理?
看一下下面标注的这行代码,根据原始值获取value值:
如果是字符串类型,则直接获取字符串的值,上面的value=“100”,就是走到这里
如果是引用类型,会走到如下分支代码:
根据参数名称,到beanFactory容器中获取bean对象,其他的步骤和字符串的value一样
二:构造器注入
构造器注入的方式就是上一节分析的有参数构造器的创建过程,在实例化的过程中就实现了注入
1
2
3
4
<bean id="student" class="com.hello.model.Student">
<constructor-arg index="0" value="100"/>
<constructor-arg index="1" value="200"/>
</bean>
运行结果:
分析过程见上一节实例化对象的分析
三:@Autowired注解注入依赖
准备工作:
运行结果:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
spring的第一天
在EasyJWeb使用spring容器
学习Spring必学的Java基础知识(4)
spring学习总结
spring面试题
spring的Bean的基础配置2
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服