<? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" > < beans > 建立一个数据源 < bean id ="dataSource" class ="org.apache.commons.dbcp.BasicDataSource" destroy-method ="close" > < property name ="driverClassName" > < value > com.microsoft.jdbc.sqlserver.SQLServerDriver </ value > </ property > < property name ="url" > < value > jdbc:microsoft:sqlserver://192.168.0.6:1433 </ value > </ property > < property name ="username" > < value > sa </ value > </ property > < property name ="password" > < value ></ value > </ property > </ bean > 建立会话工厂类,这个类使用spring专门为hibernate3提供LocalSessionFactoryBean < bean id ="sessionFactory" class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" > < property name ="dataSource" > < ref local ="dataSource" /> --引用上面的数据源 </ property > < property name ="mappingResources" > --调入映射文档 < list > < value > com/yourcompany/User.hbm.xml </ value > </ list > </ property > < property name ="hibernateProperties" > --相关设置 < props > < prop key ="hibernate.dialect" > org.hibernate.dialect.SQLServerDialect </ prop > < prop key ="hibernate.show_sql" > true </ prop > </ props > </ property > </ bean > 定义事务管理器,这个也是 spring专门为hibernate3提供的HibernateTransactionManager 事务管理器 < bean id ="transactionManager" class ="org.springframework.orm.hibernate3.HibernateTransactionManager" > < property name ="sessionFactory" > < ref local ="sessionFactory" /> --引用会话工厂类 </ property > </ bean > 定义实体DAO < bean id ="userDAO" class ="com.yourcompany.UserDAOImp" > < property name ="sessionFactory" > < ref local ="sessionFactory" /> --引用会话工厂类 </ property > </ bean > 为上面的实体DAO定义一个代理(proxy)类,这是spring为解决事务问题而提供TransactionProxyFactoryBean动态事务代理类 < bean id ="userDAOProxy" class ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" > < property name ="transactionManager" > < ref bean ="transactionManager" /> --指定事务管理器(需要是spring专用的) </ property > < property name ="target" > --目标实体DAO类 < ref local ="userDAO" /> </ property > < property name ="transactionAttributes" > --定义要使用事务的方法 < props > < prop key ="insert*" > PROPAGATION_REQUIRED </ prop > --所有insert开头的方法都使用事务,出错要回滚 < prop key ="get*" > PROPAGATION_REQUIRED,readOnly </ prop > --所有get开头的方法都使用只读事务 < prop key ="is*" > PROPAGATION_REQUIRED,readOnly </ prop > --所有ist开头的方法都使用只读事务 </ props > </ property > </ bean > 为 path="/login" 的struts action 定义实际的action类,该action 已经进行 type="org.springframework.web.struts.DelegatingActionProxy"设置 < bean name ="/login" class ="com.yourcompany.struts.action.LoginAction" singleton ="false" > < property name ="userDAO" > < ref bean ="userDAOProxy" /> --注意,这里指定的userDAO是上面定义的代理类 </ property > </ bean > </ beans >