浏览 1058 次
锁定老帖子 主题:第三章 Spring的心脏之二
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-31
注:希望大家看后,请给我一点评价,无论写的怎么样,希望你们能给我支持。提出你宝贵的意见。我会继续完善。谢谢您。朋友。
以下部分是第三章余下的. 接下来我们要讲一下几种初始化,加载配置文件的方法。此过程其实就是我们要讲的Spring的心脏。为什么叫它心脏呢?因为它是Spring的控制反转的容器。加载是有谁来加载的呢? 其实是容器加载,配置文件中描述了我们要用到的bean也就是类之间的调用关系。就是这个配置文件告诉容器应该如何组装它们之间的依赖,调用关系,它只起到了描述的用作,而真正的管理工作是由容器来管理。我们前面说过,容器就是可以实例化的BeanFactory的类。它又有很多实现。现在让我们看看它有几种实现。BeanFactory是一个接口。 我们经常用的就是扩展它的接口ApplicationContext.而它的实现又有多种,我们只介绍一些常用的实现。applicationContext.xml文件是位于Src目录下。 第一种就是: ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); 第二种就是: ApplicationContext context = new FileSystemXmlApplicationContext( "Src/ applicationContext.xml "); 注意上面两种加载是的路径。 然后在把他们转换成BeanFactory就可以了。需要用到那个bean就用getBean(“”)取得,可以根据id或name都可以。 除此之外还有两种加载的方法: 第三种方法:ClassPathResource resource = new ClassPathResource("applicationContext.xml"); BeanFactory factory = new XmlBeanFactory(resource); 第四种方法:Resource resource = new FileSystemResource("Src/applicationContext.xml"); BeanFactory factory = new XmlBeanFactory(resource); 同样要注意上面的路径的不同。其实classpath相对应的路径就是Src目录下,而fileSystem相对的是工程目录。所以它们路径是有区别的,加载时也要细心,不然就会报java.io.FileNotFoundException(系统找不到指定的文件)的异常了。 上面一些加载的方法都是存在main()方法时用的,如果在web里面。加载的方法也不同了。 在这里我也简单的说一下在和不同的框架应用时,所用的加载方法也不同。 在web项目中applicationContext.xml可能不止一个,但初始化的方法是一样的。 首先在和struts联合使用时。可以在struts-config.xml中初始化,也可以在web.xml中初始化。 (1) 在struts-config.xml中初始化。需要用到struts中的一个插件来完成。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> </plug-in> </struts-config> (2) 在web.xml中初始化又有两种方法。 第1种如下: <web-app> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app> 第2种如下: <web-app> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext-*.xml</param-value> </context-param> <servlet> <servlet-name>SpringContextServlet</servlet-name> <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> </web-app> 我就在web.xml中的两种方法在说明一下。如果配置文件的名字是applicationContext.xml且放在web-INF下面,只需要<listener></listener>和<servlet></servlet>就可以了。在web.xml加载时它会自动在WEB-INF下面找名为applicationContext.xml的配置文件。前提一定要保证位置和名字正确。 接下来让我们总结一下这一章主要讲了什么。一句话,主要讲了一些可以实例化BeanFactory的类,它们就充当着Spring的容器,不知你还迷茫吗? 说白了,我们把实现BeanFactory接口的类看做是Spring的控制反转的容器。来容纳那些需要管理的bean(类)。让容器这个大管家来操作它们之间的调用关系吧!!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |