论坛首页 Java企业应用论坛

第三章 Spring的心脏之二

浏览 1058 次
该帖已经被评为隐藏帖
作者 正文
   发表时间: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(“”)取得,可以根据idname都可以。
除此之外还有两种加载的方法:
第三种方法: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()。让容器这个大管家来操作它们之间的调用关系吧!!!
 
 
 
 
论坛首页 Java企业应用版

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