返回信息流都知道Spring的IOC是用反射来实现的,但是我一直有一个疑问为什么要用反射,而不是容器直接new 一个对象出来,楼主笨拙,求大伙儿解答
这是一条镜像帖。来源:北邮人论坛 / java / #52883同步于 2016/9/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
Spring IOC原理疑问
mengrady
2016/9/12镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
感觉不一定用反射才能搞ioc,只是有了反射ioc搞起来比较方便
以前搞c#的时候有很大一坨代码都是用很朴素的方式实现ioc的:所有依赖通过构造函数传进去,然后获取一个对象的时候就Container.Instance.Get("xxx"); 也不是不行。。就是构造函数每次写起来都感觉在吃翔。。
【 在 mengrady 的大作中提到: 】
: 都知道Spring的IOC是用反射来实现的,但是我一直有一个疑问为什么要用反射,而不是容器直接new 一个对象出来,楼主笨拙,求大伙儿解答
给一个类名字符串,只能反射,怎么可能new一个该类呢。new是写在源码时的。除非是用注解或字节码生成代码
【 在 aiquestion (狼肿粉丝团|学习c++) 的大作中提到: 】
: 感觉不一定用反射才能搞ioc,只是有了反射ioc搞起来比较方便
: 以前搞c#的时候有很大一坨代码都是用很朴素的方式实现ioc的:所有依赖通过构造函数传进去,然后获取一个对象的时候就Container.Instance.Get("xxx"); 也不是不行。。就是构造函数每次写起来都感觉在吃翔。。
支持1漏和2漏的回答,Spring是通过解析XML来识别类名的,识别完之后只能通过反射创建实例。
【 在 mengrady 的大作中提到: 】
: 都知道Spring的IOC是用反射来实现的,但是我一直有一个疑问为什么要用反射,而不是容器直接new 一个对象出来,楼主笨拙,求大伙儿解答
Spring boot已经不用xml识别类名了
http://www.infoq.com/cn/articles/microframeworks1-spring-boot/
没啥区别,用啥最后都是反射。boot只是换一种开发体验,不用配那么多依赖而已。注解也好、约定大于配置也好,反正是有规则定义了spring怎么拿到类名。
【 在 baiyifacc 的大作中提到: 】
: Spring boot已经不用xml识别类名了
: http://www.infoq.com/cn/articles/microframeworks1-spring-boot/