注:希望大家看后,请给我一点评价,无论写的怎么样,希望你们能给我支持。提出你宝贵的意见。我会继续完善。谢谢您。朋友。
以下部分是第三章余下的.
以下部分是第三章余下的.
接下来我们要讲一下几种初始化,加载配置文件的方法。此过程其实就是我们要讲的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(类)。让容器这个大管家来操作它们之间的调用关系吧!!!