锁定老帖子 主题:我对IoC/DI的理解
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-24
a442579302 写道 jinnianshilongnian 写道 a442579302 写道 此贴很精彩,讨论也很精彩。。。我是一个新手,看完后有个疑问。既然IOC容器负责初始化组件,那么容器又是怎样初始化的呢?不至于每次都得在获取服务的时候都显式声明容器对象吧。。。
1、容器属于应用程序的基础设施,可以为每个应用创建一个容器(必须有个点要创建,如我们使用web环境 可以使用监听器创建)。 2、DI的关键思想不是容器,某些容器只是实现了这个模式:DI的本质是: 引用 模式本身不重要,重要的是应该将组件的配置和使用分离开。
2.1、 即组件需要什么服务[我们可以放到配置文件/程序中装配都行 但服务的具体实现可以灵活选择 而不是写死了] 和 组件怎么使用应该分离(说白了是面向接口的一种延伸) 2.2、在此我们其实使用了插拔式(装配)技术,利用这个技术,我们可以为不同的应用程序部署不同的配置,使用是无影响的。 感谢楼主反复强调什么是IOC和DI,但对于初学者不免有些抽象。还是针对容器初始化的问题,因为我学的时候下过一些demo看,入门的demo是在action中显式创建beanFactory ,再从中获取service组件;而一些整合的demo中,并没有看到这一初始化的过程,我知道是spring做了这些工作。但具体怎么做的呢?包括怎么配置?原理?。。。渴望楼主帮个忙解答一下,谢了 你只需要把BeanFactory看成是一个大而全的工厂即可,应用要什么 就问工厂要。但BeanFactory还是工厂,因此Spring提供了ApplicationContext 上下文,可以把它看成是应用的基础设施或平台,应用的组件插在他之上,应用启动时肯定需要个入口,这个如果是必须的。 但具体怎么做的呢?包括怎么配置?原理? 这个问题太大了,建议看我博客前几章的IoC和DI部分。 http://jinnianshilongnian.iteye.com/category/206533 等你把问题范围缩小后,再探讨吧 |
|
返回顶楼 | |
发表时间:2012-08-24
jinnianshilongnian 写道 a442579302 写道 jinnianshilongnian 写道 a442579302 写道 此贴很精彩,讨论也很精彩。。。我是一个新手,看完后有个疑问。既然IOC容器负责初始化组件,那么容器又是怎样初始化的呢?不至于每次都得在获取服务的时候都显式声明容器对象吧。。。
1、容器属于应用程序的基础设施,可以为每个应用创建一个容器(必须有个点要创建,如我们使用web环境 可以使用监听器创建)。 2、DI的关键思想不是容器,某些容器只是实现了这个模式:DI的本质是: 引用 模式本身不重要,重要的是应该将组件的配置和使用分离开。
2.1、 即组件需要什么服务[我们可以放到配置文件/程序中装配都行 但服务的具体实现可以灵活选择 而不是写死了] 和 组件怎么使用应该分离(说白了是面向接口的一种延伸) 2.2、在此我们其实使用了插拔式(装配)技术,利用这个技术,我们可以为不同的应用程序部署不同的配置,使用是无影响的。 感谢楼主反复强调什么是IOC和DI,但对于初学者不免有些抽象。还是针对容器初始化的问题,因为我学的时候下过一些demo看,入门的demo是在action中显式创建beanFactory ,再从中获取service组件;而一些整合的demo中,并没有看到这一初始化的过程,我知道是spring做了这些工作。但具体怎么做的呢?包括怎么配置?原理?。。。渴望楼主帮个忙解答一下,谢了 你只需要把BeanFactory看成是一个大而全的工厂即可,应用要什么 就问工厂要。但BeanFactory还是工厂,因此Spring提供了ApplicationContext 上下文,可以把它看成是应用的基础设施或平台,应用的组件插在他之上,应用启动时肯定需要个入口,这个如果是必须的。 但具体怎么做的呢?包括怎么配置?原理? 这个问题太大了,建议看我博客前几章的IoC和DI部分。 http://jinnianshilongnian.iteye.com/category/206533 等你把问题范围缩小后,再探讨吧 最近实习,在学spring,看了楼主一些博文很很受益。感谢了! |
|
返回顶楼 | |