关闭

Spring的配置文档applicationContext.xml

124人阅读 评论(0) 收藏 举报

(转载)http://blog.csdn.net/dreamrealised/article/details/9123199

进行java EE开发最常用的就是Spring,

Spring是一种轻量级的java开发框架,是一种javaEE的容器管理工具,Spring的核心就是IoC容器,Spring利用IoC容器来注册bean,对bean的管理能够实现java对象之间的依赖关系,从而成为完成其他复杂任务的基础。Spring建立在IoC容器核心功能之上的其他重要功能有:AOP(面向切面编程),事务管理,springMVC,ORM等,这些功能都在Spring的核心配置文档applicationContext.xml中得以体现。
下面就简单总结下applicationContext.xml的最基本最简单的结构。先上代码(最精简版):
[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  6.     http://www.springframework.org/schema/aop  
  7.     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"  
  8.     default-lazy-init="true" default-autowire="byName" default-init-method="" default-destroy-method="">  
  9.     <!-- 用于读取properties文件,此处将数据库连接的用户名密码等存在jdbc.properties文件中 -->  
  10.     <bean id="propertyConfigurer"  
  11.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  12.         <property name="locations">  
  13.             <list>  
  14.                 <value>WEB-INF/jdbc.properties</value>  
  15.             </list>  
  16.         </property>  
  17.     </bean>  
  18.     <!-- 配置数据库连接 -->  
  19.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  20.         destroy-method="close">  
  21.         <property name="driverClassName" value="${jdbc.driverClassName}" />  
  22.         <property name="url" value="${jdbc.url}" />  
  23.         <property name="username" value="${jdbc.username}" />  
  24.         <property name="password" value="${jdbc.password}" />  
  25.         <property name="poolPreparedStatements" value="true" />  
  26.         <property name="defaultAutoCommit" value="true" />  
  27.     </bean>  
  28.     <!-- 整合hibernate -->  
  29.     <bean id="sessionFactory"  
  30.         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  31.         <property name="hibernateProperties">  
  32.             <value> hibernate.dialect=${hibernate.dialect}  
  33.                 hibernate.query.substitutions=true  
  34.                 hibernate.show_sql=true  
  35.                 hibernate.hbm2ddl.auto=none  
  36.             </value>  
  37.         </property>  
  38.         <!-- 持久化类,注解形式 -->  
  39.         <property name="annotatedClasses">  
  40.             <list>  
  41.                 <value>nju.software.xkxt.data.dataobject.UserDO</value>  
  42.         </property>  
  43.     </bean>  
  44.     <!-- 事务管理  注:事实上当事务管理器名字为transactionManager时,就不需要加transaction-manager属性 -->  
  45.     <tx:annotation-driven transaction-manager="transactionManager" />  
  46.     <bean id="transactionManager"  
  47.         class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  48.         <property name="sessionFactory" ref="sessionFactory" />  
  49.     </bean>  
  50.     <!-- 共用Dao -->  
  51.     <bean id="userDao" class="nju.software.xkxt.data.dao.implement.UserDaoImpl"></bean>  
  52.     <!-- 共用Service -->  
  53.     <bean id="userService" class="nju.software.xkxt.service.implement.UserServiceImpl"></bean>  
  54. </beans>  

Spring的配置文档applicationContext.xml
文档中最基本的配置就是各种bean的配置,bean的配置有几个是必不可少的
1.sessionFactory
spring中ORM的配置。如果Dao层要使用hibernate,用到的hibernateTemplate,那么必须要建立sessionFactory类.sessionFactorybean是在ssh整合中hibernate托管给spring的,因此配置文档中要配置sessionFactory,并且将sessionFactory装配到相应的Dao中。由于文档beans的默认配置中有default-autowire=byName这个默认配置,因此采用自动装配的方式,通过寻找名字sessionFactory来注入到每个Dao中。sessionFactory要装配dataSource,此处也不需要手动装配,只需要在文档中定义dataSource的bean即可。
2.dataSource
配置数据库连接,要装配到sessionFactory中。要声明数据库的连接路径url,数据库用户名username,密码password等。此处defaultAutoCommit=true是设置sql语句的自动提交,即执行一条sql,都立即提交,这样很方便,但是有时候会出现问题。因此就用到事务管理,参见事务管理http://blog.csdn.net/dreamrealised/article/details/9123173jdbc的事务管理中要屏蔽其自动提交。还有,我们发现以上的属性url,username,password都是通过文档引入的,并不是写死在里面的,因此还需要配置一个bean就是propertyConfigurer。
3.propertyConfigurer
这个配置用于配置properties文件,主要的用处就是从properties文件中读取相应的属性和属性值到applicationContext文档(其实properties文件就是一个map,key-value键值对形式)。这样的好处是将用户名和密码等信息从applicationContext文档中抽取出来,安全而且修改方便。
4.其他的自定义的bean
在编写代码中,如果要应用spring提供的ioc的功能,就可以在applicationContext文档中配置相应的dao层和service层的bean,配置起来相当方便,例子如上图。而且用起来也很方便。
5.transactionManager
以上几类bean都是必须要配置的。如果用到事务管理的相关内容,就需要配置transactionManagerbean,因此该bean并不是必须的,只是在用到的时候才进行配置。配置也相当简单如上图。具体的spring的事务管理的介绍请参见http://blog.csdn.net/dreamrealised/article/details/9123173。在此不在赘述。
6.AOP
aop并不是必须的,什么时候用到拦截器的时候就对相应的bean进行配置,aop的介绍打算从新写一篇博文来介绍。
7.spring MVC
spring MVC请参见后续博文。
最后,beans的属性中有一个属性default-lazy-init,这个属性是用来设置bean的延迟实例化的,默认的值为false。如果default-lazy-init=true,则说明该bean在ApplicationContext实现在初始化时被提前实例化。如果设为false,bean将告诉IoC容器在ApplicationContext启动时不进行实例化,而是在第一次被用到时才实例化。
另外bean的init-method属性(beans的default-init-method)指定bean初始化时执行的方法;bean的distory-method属性(default-destroy-method)指定bean销毁时执行的方法。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:256281次
    • 积分:4250
    • 等级:
    • 排名:第7464名
    • 原创:119篇
    • 转载:371篇
    • 译文:0篇
    • 评论:12条