论坛首页 Java企业应用论坛

我对IoC/DI的理解

浏览 39443 次
该帖已经被评为精华帖
作者 正文
   发表时间: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
等你把问题范围缩小后,再探讨吧
0 请登录后投票
   发表时间: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,看了楼主一些博文很很受益。感谢了!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics