ssh框架中spring整合hibernate的配置文件模板(带详细注释)
applicationContext.xml的配置文件模板
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3 xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xmlns:p="http://www.springframework.org/schema/p" 7 xmlns:tx="http://www.springframework.org/schema/tx" 8 xmlns:context="http://www.springframework.org/schema/context" 9 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 10 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 11 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 12 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 13 14 15 <!-- 数据源配置 --> 16 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 17 destroy-method="close"> 18 <property name="driverClass"> 19 <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value> 20 </property> 21 <property name="jdbcUrl"> 22 <value>jdbc:sqlserver://192.168.2.80\SQL2005;databaseName=ledger</value> 23 </property> 24 <!-- 默认初始化获取3个连接 --> 25 <!-- 空闲连接检查时间 --> 26 <property name="idleConnectionTestPeriod"> 27 <value>18000</value> 28 </property> 29 <!-- 最大空闲连接时间 3小时 --> 30 <property name="maxIdleTime"> 31 <value>25000</value> 32 </property> 33 <!-- 检查获取的连接是否有效 --> 34 <property name="testConnectionOnCheckin"> 35 <value>true</value> 36 </property> 37 <property name="testConnectionOnCheckout"> 38 <value>true</value> 39 </property> 40 <!-- 测试语句 --> 41 <property name="preferredTestQuery"> 42 <value>select 1</value> 43 </property> 44 <property name="properties"> 45 <props> 46 <prop key="user">sa</prop> 47 <prop key="password">123456</prop> 48 <prop key="c3p0.acquire_increment">5</prop> 49 <prop key="c3p0.idle_test_period">18000</prop> 50 51 <!-- 连接空闲超时时间 --> 52 <prop key="c3p0.timeout">20000</prop> 53 <prop key="c3p0.max_size">40</prop> 54 <prop key="c3p0.max_statements">100</prop> 55 <prop key="c3p0.min_size">10</prop> 56 </props> 57 </property> 58 </bean> 59 <!-- session工厂(包含数据库的连接信息,实体类和表的映射文件) --> 60 <bean id="sessionFactory" 61 class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 62 <property name="dataSource"> 63 <ref bean="dataSource" /> 64 </property> 65 <property name="hibernateProperties"> 66 <props> 67 <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop><!--hibernate的数据库方言 本示例:sqlserver数据库 --> 68 <prop key="hibernate.show_sql">true</prop><!-- 显示sql语句 --> 69 <prop key="hibernate.format_sql">true</prop><!-- 格式化控制台显示sql语句 --> 70 <prop key="hibernate.hbm2ddl.auto">update</prop><!-- 如果映射文件在数据库中无表,自动生成表 --> 71 </props> 72 </property> 73 74 <!-- 导入hibernate的映射文件 实体类.hbm.xml文件 --> 75 <property name="mappingDirectoryLocations"> 76 <list> 77 <value>classpath:/org/ledger/entity</value> 78 </list> 79 </property> 80 81 </bean> 82 <!--spring的事务 --> 83 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 84 <property name="sessionFactory"> 85 <ref bean="sessionFactory" /> 86 </property> 87 </bean> 88 89 <!-- 事务的配置。类似于切点。 --> 90 <tx:advice id="txadvice" transaction-manager="transactionManager"> 91 <tx:attributes> 92 <tx:method name="saveSysLog" propagation="REQUIRES_NEW" /><!--requires_new:新建事务,如果当前存在事务,把当前事务挂起 --> 93 <tx:method name="get*" propagation="REQUIRED" read-only="true"/><!--required:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中 --> 94 <tx:method name="find*" propagation="REQUIRED" read-only="true"/> 95 <tx:method name="query*" propagation="REQUIRED" read-only="true"/> 96 <tx:method name="*" propagation="REQUIRED" /> 97 </tx:attributes> 98 </tx:advice> 99 100 <!-- 配置日志的增强类(说白了,所有请求的连接点都要先到该类中的方法跑一下。)--> 101 <bean id="logAspect" class="org.ledger.interceptor.LogAspect" autowire="byType"></bean> 102 103 <!-- aop:config节点中可以定义多个切面 --> 104 <aop:config proxy-target-class="true"> <!-- 该值为true,表示用spring的cglib动态代理技术代理切面,为false时表明以jdk的动态代理技术代理切面 --> 105 <!-- 配置事务的切点 --> 106 <aop:pointcut id="serviceMethods" expression="execution(* org.ledger.service.*Service.*(..))"/> <!-- 定义一个切点 --> 107 108 109 <!-- <aop:advisor>”则定义了在哪些连接点应用什么 --> 110 <!-- 此节点时配置切点加上事务管理 (spring自身的事务管理类,给所有的业务类加上事务,面向切面的)--> 111 <!-- advisor 是spring aop中的一个概念。 112 advisor 可以翻译为增强器, 他是切入点(pointcut)和advice 的适配器。 它有两部门组成:一个增强以及一个说明在何处增强的切入点。 113 增强器完整的模块化了一个方面(因为一个方面,就是由在什么地方增强和怎么增强组成的) 。 增强和切入点可以复用。 --> 114 <aop:advisor advice-ref="txadvice" pointcut-ref="serviceMethods" /> <!-- 切点和增强的复合物,advice-ref引用的是增强,pointcut-ref引用的切点 --> 115 116 117 <!-- 配置日志 (程序员开发的)--> 118 <!-- “<aop:aspect>”实际上是定义横切逻辑,就是在连接点上做什么 --> 119 <aop:aspect ref="logAspect"><!-- 定义一个切面 ,ref引用的是增强方法所在的bean。本示例,表示该日志切面的操作方法都在logAspect所代表的java类中--> 120 <aop:pointcut expression="execution(* org.ledger.service.*Service.*(..))" id="logPointcut" /><!-- 定义日志的切点,动态代理接口 --> 121 <aop:after-returning method="saveLog" pointcut-ref="logPointcut" /><!-- 增强的方法+切点。意思是,执行完该切点后的连接点(方法),调用增强方法 --> 122 <aop:after-throwing method="saveLogHasThrowing" pointcut-ref="logPointcut" /><!-- 增强方法+切点。意思是,执行该切点的连接点(方法)抛出异常,调用增强方法 --> 123 </aop:aspect> 124 </aop:config> 125 126 <!-- 给项目加入webservice的扫描器(应该是注解) --> 127 <context:component-scan base-package="org.ledger.webservice"></context:component-scan> 128 <!-- 导入action dao service 等的bean节点配置--> 129 <import resource="applicationContext-dao.xml"/> 130 <import resource="applicationContext-service.xml"/> 131 <import resource="applicationContext-webservice.xml"/> 132 <import resource="applicationContext-action.xml"/> 133 </beans>