67,513
社区成员
发帖
与我相关
我的任务
分享
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<!-- 定义数据源Bean,使用C3P0数据源实现 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<!-- 设置连接数据库的驱动、URL、用户名、密码 -->
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 连接池初始时的连接数 -->
<property name="initialPoolSize" value="1" />
<property name="minPoolSize" value="1" />
<!-- 连接池的最大数 -->
<property name="maxPoolSize" value="40" />
<!-- 连接的最大空闲时间,如果超过60秒这个时间,某个数据库连接还没有被使用,则会断开掉这个连接 -->
<property name="maxIdleTime" value="60" />
<property name="unreturnedConnectionTimeout" value="100" />
<property name="debugUnreturnedConnectionStackTraces" value="true" />
</bean>
<!-- 定义Hibernate的SessionFactory,依赖注入数据源dataSource -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- mappingResouces属性用来列出全部映射文件 -->
<property name="mappingResources">
<list>
<!-- 加载Hibernate映射文件 -->
<value>com/ntp/model/Admin.hbm.xml</value>
<value>com/ntp/model/Course.hbm.xml</value>
<value>com/ntp/model/Coursetype.hbm.xml</value>
<value>com/ntp/model/CourseUser.hbm.xml</value>
<value>com/ntp/model/Courseware.hbm.xml</value>
<value>com/ntp/model/Exercise.hbm.xml</value>
<value>com/ntp/model/ExerciseUser.hbm.xml</value>
<value>com/ntp/model/Forum.hbm.xml</value>
<value>com/ntp/model/ForumUser.hbm.xml</value>
<value>com/ntp/model/Notice.hbm.xml</value>
<value>com/ntp/model/Score.hbm.xml</value>
<value>com/ntp/model/Task.hbm.xml</value>
<value>com/ntp/model/User.hbm.xml</value>
<value>com/ntp/model/Video.hbm.xml</value>
</list>
</property>
<!-- 定义Hibernate的SessionFactory的属性 -->
<property name="hibernateProperties">
<!-- 指定数据库方言、是否自动建表是否生成SQL语句等 -->
<value>
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
</value>
</property>
</bean>
<!-- 为继承HibernateDaoSupport的DAO实现类注入SessionFactory -->
<bean id="adminDao" class="com.ntp.dao.impl.AdminDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="courseDao" class="com.ntp.dao.impl.CourseDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="coursetypeDao" class="com.ntp.dao.impl.CoursetypeDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="courseUserDao" class="com.ntp.dao.impl.CourseUserDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="coursewareDao" class="com.ntp.dao.impl.CoursewareDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="exerciseDao" class="com.ntp.dao.impl.ExerciseDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="exerciseUserDao" class="com.ntp.dao.impl.ExerciseUserDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="forumDao" class="com.ntp.dao.impl.ForumDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="forumUserDao" class="com.ntp.dao.impl.ForumUserDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="noticeDao" class="com.ntp.dao.impl.NoticeDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="scoreDao" class="com.ntp.dao.impl.ScoreDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="taskDao" class="com.ntp.dao.impl.TaskDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="userDao" class="com.ntp.dao.impl.UserDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<bean id="videoDao" class="com.ntp.dao.impl.VideoDaoImpl"
p:sessionFactory-ref="sessionFactory">
</bean>
<!-- 定义业务逻辑组件模板 -->
<!-- 为之注入DAO组件 -->
<bean id="daoTemplate" abstract="true" lazy-init="true"
p:adminDao-ref="adminDao" p:courseDao-ref="courseDao"
p:coursetypeDao-ref="coursetypeDao" p:courseUserDao-ref="courseUserDao"
p:coursewareDao-ref="coursewareDao" p:exerciseDao-ref="exerciseDao"
p:exerciseUserDao-ref="exerciseUserDao" p:forumDao-ref="forumDao"
p:forumUserDao-ref="forumUserDao" p:noticeDao-ref="noticeDao"
p:scoreDao-ref="scoreDao" p:taskDao-ref="taskDao" p:userDao-ref="userDao"
p:videoDao-ref="videoDao">
</bean>
<!-- 定义业务逻辑组件,继承业务逻辑组件的模板 -->
<bean id="adminService" class="com.ntp.service.impl.AdminServiceImpl"
parent="daoTemplate" />
<bean id="studentService" class="com.ntp.service.impl.StudentServiceImpl"
parent="daoTemplate" />
<bean id="teacherService" class="com.ntp.service.impl.TeacherServiceImpl"
parent="daoTemplate" />
<!-- 配置Hibernate的局部事务管理器,需要依赖注入SessionFactory的引用 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory">
</bean>
<!-- 配置事务增强处理Bean,指定事务管理器 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 所有以'get'开头的方法是read-only的 -->
<tx:method name="get*" read-only="true"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<!-- 其他方法使用默认的事务设置 -->
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 匹配adminService,studentService,teacherService三个Bean所有方法的执行 -->
<aop:pointcut id="pointcut" expression="bean(adminService)||bean(studentService)||bean(teacherService)"/>
<!-- 指定在pointcut切入点应用txAdvice事务增强处理 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config>
</beans>