关于Spring IOC容器

Posted javaloverx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Spring IOC容器相关的知识,希望对你有一定的参考价值。

注:都是从net的各个角落找到的,如涉及到版权请联系我,君并无意冒犯。

1,spring容器的三种加载方式:

(1)FileSystemXmlApplicationContext
这个方法是从文件绝对路径加载配置文件,例如:
ApplicationContext ctx = new FileSystemXmlApplicationContext( "G:/Test/applicationcontext.xml ");
如果在参数中写的不是绝对路径,那么方法调用的时候也会默认用绝对路径来找,我测试的时候发现默认的绝对路径是eclipse所在的路径。
采用绝对路径的话,程序的灵活性就很差了,所以这个方法一般不推荐。(如果要使用classpath路径,需要加入前缀classpath: )
(2)ClassPathXmlApplicationContext
这个方法是从classpath下加载配置文件(适合于相对路径方式加载),例如:
ApplicationContext ctx = new ClassPathXmlApplicationContext( "/applicationcontext.xml ");
该方法参数中classpath: 前缀是不需要的,默认就是指项目的classpath路径下面;

这也就是说用ClassPathXmlApplicationContext时默认的根目录是在WEB-INF/classes下面,而不是项目根目录。这个需要注意!

(3)XmlWebApplicationContext
专为web工程定制的方法,推荐Web项目中使用。例如:
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);

2,关于applicationContext与beanFactory的区别:

 (口语)applicationContext是对beanFactory的强化,增加了很多功能。

 (专业) --a) BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。

                 --b)ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:

                                1. 国际化支持
                                    2. 资源访问:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties”
                                    3. 事件传递:通过实现ApplicationContextAware接口

  (总结)Spring的IoC容器就是一个实现了BeanFactory接口的可实例化类。事实上,Spring提供了两种不同的容器:一种是最基本的BeanFactory,另一种是扩展的                                  ApplicationContext。BeanFactory 仅提供了最基本的依赖注入支持,而 ApplicationContext 则扩展了BeanFactory ,提供了更多的额外功能。

  (区别)BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标Bean;而ApplicationContext则在初始化应用上下文时就实例化所有的单实例                     的Bean。因此ApplicationContext的初始化时间会比BeanFactory稍长一些.

 

 















以上是关于关于Spring IOC容器的主要内容,如果未能解决你的问题,请参考以下文章

关于Spring IOC容器

Spring框架——关于IOC容器和注解的36个小实验

关于Spring的个人理解

关于Spring AOP和IOC的一些总结

关于Spring IOC (DI-依赖注入)

关于在Spring中通过注解形式的IoC容器 纯使用 @ComponentScan注解实现对包的自动扫描,实现非XML形式的 注解形式装配Bean类