一,基本环境配置

1,下载SpringFramework最新版本,并在classpath中加入Spring.jar,目前已经发展到1.2版。
2,下载SpringFramework所所依赖的其它jar包,例如common-logging.jar等等。
3,Spring采用Apache common logging,并结合Apache log4j作为日志输出组件,因此需要在classpath中创建log4j.properties文件,并做相应的配置,例如:

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%

n

二,Bean配置文件

1,在classpath中需要创建一个bean配置文件(并非强制),用于描述哪些对象需要通过Spring来管理以及这些对象之间的关系等等,可以是一个xml文件,也可以是一个properties文件。

1)Xml配置文件的一个例子:


2)Properties配置文件的一个例子:

2,Xml形式的bean配置文件语法

文件头声明:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC  "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans></beans>,最外层标签,在文件头中定义。

<bean></bean>,bean定义的标签,是最为常用的标签之一。其常用属性如下:

Id,bean的唯一标识,用于bean对象的获取。

name,bean的名称,用于bean对象的获取。

class,bean实例化时所对应的java类。

singleton,取值为true/false,标识bean是否为单一实例,默认值为true

autowire,bean属性间非显示引用时,自动进行引用的方式,取值范围byType、byName、constructor

dependency-check,在设置了autowire时有效,告诉容器在自动进行引用时的检查规则,取值范围objects、simple、all

<property></property>,配置bean属性的标签。

name,属性的名称,一般和bean所对应的类中的属性的名称相同。

<value></value>,配置属性的值,一般与property配套使用,其值一般为实体值,例如

<property name=“url”>
    <value>http://www.google.com</value>
</property>

<ref/>,配置属性的值,一般与property配套使用,其值一般为对象。

bean,ref的值所指向的对象的bean的名称。

   例如:

<property name=“userDao”>
       <ref bean=“UserDao”/>
   </property>

例子:



<list></list>,如果bean的属性中有列表或数组对象,则通过该标签和value或ref标签合用,将值一一列出,例如:

<property name=”myRefArray”>
      <list>
               <ref bean=”myInventoryManager”/>
               <ref bean=”yourInventoryManager”/>
          </list>
   </property>
<map></map>,如果bean的属性中有map对象,则通过该标签和entry与value或ref标签合用,将值一一列出,例如:
<property name=”myValueMap”>
           <map>
                <entry key=”myMapKey”>
                      <value>myMapValue</value>
                </entry>
                <entry key=”yourMapKey”>
                      <value>yourMapValue</value>
                </entry>
           </map>
      </property>

例子:


三,配置环境加载

1,配置环境的加载,主要是读取bean配置文件,并将各个bean初始化。
初始化过程由应用程序自己来进行,一般分为两种情况:xml形式bean配置文件的加载和property形式bean配置文件的加载。
1)property形式bean配置文件的加载:

ListableBeanFactory bf=new DefaultListableBeanFactory();
PropertiesBeanDefinitionReader reader =new PropertiesBeanDefinitionReader(bf);
Resource resource = new ClassPathResource(“beans-config.properties”);
reader.loadBeanDefinitions(resource);
UserDao udao=(UserDao)bf.getBean(“userdao”);

2)xml形式bean配置文件的加载:

Resource resource = new ClassPathResource(“beans-config.xml”);
ListableBeanFactory bf = new XmlBeanFactory(resource);
UserDao udao=(UserDao)bf.getBean(“userdao”);
ListableBeanFactory bf = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(bf);
Resource resource = new ClassPathResource(“beans-config.xml”);
reader.loadBeanDefinitions(resource);
UserDao udao=(UserDao)bf.getBean(“userdao”);

2,为了支持J2EE web应用,Spring提供了一个ApplicationContext对象,该对象除了提供bean的获取之外,还可以提供对Resource Bundle支持,对一些应用事件的支持等等。此时bean的配置文件一般放在WEB-INF目录下。
为了在J2EE服务启动时,自动加载Spring环境,需要在web.xml中配置一个listener
 

<web-app>
       <listener>
      <listener-class>  
       org.springframework.web.context.ContextLoaderListener
      </listener-class>
       </listener></web-app>

那么在servlet、jsp、filter或Struts Action中可以按照下面的方式访问:
WebApplicationContext wac=WebApplicationContextUtils.getWebApplicationContext(servletContext);
UserDao udao=(UserDao)was.getBean(“userdao”);
一般来说经典的Web MVC框架,例如Struts、SpringMVC等都提供了自己方式,可以将servlet或action做为pojo来让Spring统一管理,这样就不需要手工加载context并获取对象了。