###步骤见此处
1.SpringIoC,DI配置 (ApplicationContext.xml)
<?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:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<bean id="userBean" class="com.luhao.bean.UserBean" scope="prototype" p:userName="你好"></bean>
<bean id="testBean" class="com.luhao.bean.TestBean">
<property name="id" value="1"></property>
<property name="arr">
<list>
<value>1</value>
<value>2</value>
</list>
</property>
<property name="list">
<list>
<value>3</value>
<value>4</value>
</list>
</property>
<property name="map">
<map>
<entry key="123" value="123"></entry>
<entry key="321" value="321"></entry>
<entry key="1234567" value="1234567"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="user">root</prop>
<prop key="password">luhao123</prop>
<prop key="name">luhao</prop>
</props>
</property>
</bean>
</beans>
2.SpringAOP配置 (ApplicationContext.xml)
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描需要的包 -->
<context:component-scan base-package="com.luhao.*"></context:component-scan>
<!-- 创建需要的对象-->
<bean id="userAspect" class="com.luhao.aop.UserAspect"></bean>
<bean id="userService" class="com.luhao.service.impl.UserServiceImpl"></bean>
<bean id="userDao" class="com.luhao.dao.impl.UserDaoImpl"></bean>
<!-- 配置切点 -->
<aop:config>
<aop:pointcut expression="execution(* com.luhao.*..*(..))" id="pointcut1"/>
<!-- 配置切面 -->
<aop:aspect ref="userAspect">
<aop:before method="before" pointcut-ref="pointcut1"/>
<aop:after method="after" pointcut-ref="pointcut1"/>
</aop:aspect>
</aop:config>
</beans>
3.Mybatis配置MybatisConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 1.键值对文件 -->
<properties resource="db.properties">
<property name="test" value="test"/>
</properties>
<!-- 2.设置,暂只关注日志 -->
<settings>
<!-- 日志 -->
<setting name="logImpl" value="LOG4J"/>
<!-- 延迟加载开关 -->
<setting name="lazyLoadingEnabled" value="true"></setting>
<!-- 关闭积极加载 -->
<setting name="aggressiveLazyLoading" value="false"></setting>
</settings>
<!-- 3.类型别名 ,可以只设置包名-->
<typeAliases>
<package name="com.project.bean"/>
</typeAliases>
<!-- 4.环境变量 -->
<environments default="development">
<!-- 默认的开发环境,一般一个environment代表一个数据库 -->
<environment id="development">
<!-- 事务管理方式 -->
<transactionManager type="JDBC"/>
<!-- 声明使用连接池,并设置连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<property name="poolMaximumActiveConnections" value="30"/>
</dataSource>
</environment>
</environments>
<!-- 5.管理映射关系表 -->
<mappers>
<mapper resource="com/project/mapper/ExpertMapper.xml"/>
<mapper resource="com/project/mapper/ClogMapper.xml"/>
<mapper resource="com/project/mapper/CdtlMapper.xml"/>
<mapper resource="com/project/mapper/AreaMapper.xml"/>
<mapper resource="com/project/mapper/ClassMapper.xml"/>
<mapper resource="com/project/mapper/DisasterLogMapper.xml"/>
<mapper resource="com/project/mapper/MedicineMapper.xml"/>
<mapper resource="com/project/mapper/StockoutDetalMapper.xml"/>
<mapper resource="com/project/mapper/StockoutLogMapper.xml"/>
<mapper resource="com/project/mapper/UserMapper.xml" />
<mapper resource="com/project/mapper/OperateLogMapper.xml" />
<mapper resource="com/project/mapper/IllnessDaomapper.xml"></mapper>
<mapper resource="com/project/mapper/InsectDaomapper.xml"></mapper>
<mapper resource="com/project/mapper/MouseDaomapper.xml"></mapper>
</mappers>
</configuration>
4.Hibernate配置 hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库连接配置 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/db_hibernate?useUnicode=true&characterEncoding=UTF-8</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 指定Hibernate的连接提供方式,如果没有将不会使用c3p0作为Hibernate的连接池 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!-- 最大连接数 -->
<property name="hibernate.c3p0.max_size">20</property>
<!-- 最小连接数 -->
<property name="hibernate.c3p0.min_size">5</property>
<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
<property name="hibernate.c3p0.timeout">120</property>
<!-- 最大的PreparedStatement的数量 -->
<property name="hibernate.c3p0.max_statements">100</property>
<!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒-->
<property name="hibernate.c3p0.idle_test_period">120</property>
<!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
<property name="hibernate.c3p0.acquire_increment">2</property>
<!-- 每次都验证连接是否可用 -->
<property name="hibernate.c3p0.validate">true</property>
<!-- SQL 方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- 在控制台输出sql语句 -->
<property name="show_sql">true</property>
<!-- 在启动时根据配置更新数据库 -->
<property name="hbm2ddl.auto">update</property>
<!-- hibernate加载映射的实体 -->
<mapping class="com.luhao.entity.TypeEntity"></mapping>
<mapping class="com.luhao.entity.ProductEntity"></mapping>
<mapping class="com.luhao.entity.StockEntity"></mapping>
<mapping class="com.luhao.entity.StockDetalEntity"></mapping>
</session-factory>
</hibernate-configuration>
5.Spring+Mybatis配置(1/2) ApplicationContext.xml
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-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/task http://www.springframework.org/schema/task/spring-task-3.0.xsd ">
<!-- 导入propertis文件 -->
<context:property-placeholder location="com/luhao/resource/db.properties"></context:property-placeholder>
<!-- 自动扫描包 -->
<context:component-scan base-package="com.luhao.*"></context:component-scan>
<!-- 获得数据源 (Spring管理Mybatis 1/3) -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="${url}"></property>
<property name="username" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="driverClassName" value="${driver}"></property>
</bean>
<!-- 获得SqlSessionFactory (Spring管理Mybatis 2/3) -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value = "classpath:com/luhao/resource/MybatisConfig.xml"></property>
</bean>
<!-- 扫描接口,根据mapper文件生成实现类,参数1:需要扫描的接口 (Spring管理Mybatis 3/3)-->
<bean id="mapperConfig" class = "org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.luhao.dao"></property>
<property name="sqlSessionFactoryBeanName" value = "sqlSessionFactory"></property>
</bean>
<!-- 配置事件管理器 (Spring配置Mybatis事物 1/3)-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事件通知 (Spring配置Mybatis事物 2/3)-->
<tx:advice id="advice1" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"></tx:method>
<tx:method name="add*" propagation="REQUIRED" isolation="DEFAULT" rollback-for="Exception" no-rollback-for="Exception"></tx:method>
<tx:method name="find*" read-only="true"></tx:method>
</tx:attributes>
</tx:advice>
<!-- 配置AOP (Spring配置Mybatis事物 3/3)-->
<aop:config>
<aop:pointcut id="pointcut1" expression="execution(* com.luhao.service.IOrderService.add(..))"></aop:pointcut>
<aop:advisor advice-ref="advice1" pointcut-ref="pointcut1"></aop:advisor>
</aop:config>
<!-- 配置业务层Bean -->
<bean id="orderService" class="com.luhao.service.impl.OrderServiceImpl"></bean>
</beans>
5.Spring+Mybatis配置(2/2) MybatisConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 类型别名 ,可以只设置包名-->
<typeAliases>
<package name="com.luhao.bean"/>
</typeAliases>
<!-- 管理映射关系表 -->
<mappers>
<mapper resource="com/luhao/mapper/BookMapper.xml" />
<mapper resource="com/luhao/mapper/OrderMapper.xml" />
</mappers>
</configuration>
7.Spring+Hibernate配置 ApplicationContext.xml
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-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/task http://www.springframework.org/schema/task/spring-task-3.0.xsd ">
<!-- 导入propertis文件 -->
<context:property-placeholder location="com/luhao/resource/db.properties"></context:property-placeholder>
<!-- 自动扫描包 -->
<context:component-scan
base-package="com.luhao.Entity,com.luhao.service,com.luhao.dao"></context:component-scan>
<!-- Spring管理Hibernate第一步:配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="${url}"></property>
<property name="username" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="driverClassName" value="${driver}"></property>
</bean>
<!-- 使用c3p0连接池的配置 -->
<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${url}"></property>
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="driverClass" value="${driver}"></property>
<property name="maxPoolSize" value="20" />
<property name="minPoolSize" value="5" />
<!-- 初始化建立的连接数 -->
<property name="initialPoolSize" value="10" />
<!-- 最大空闲时间,120秒内未被使用的连接将被丢弃 -->
<property name="maxIdleTime" value="120" />
<!-- 当连接池耗尽,且未达到最大连接数时,一次获取的连接数 -->
<property name="acquireIncrement" value="2" />
<!-- 空闲检查时间间隔, 每隔120秒检查连接池里的空闲连接 ,单位是秒 -->
<property name="idleConnectionTestPeriod" value="60" />
</bean>
<!-- Spring管理Hibernate第二步:配置sessionFacoty -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource2"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
<property name="packagesToScan" value="com.luhao.entity"></property>
</bean>
<!-- 数据库事务第一步:配置数据库管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 数据库事务第二步:配置事务增强 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="regist" rollback-for="Execption" />
<tx:method name="login" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<!-- 数据库事务第三步:配置切点 -->
<aop:config>
<aop:pointcut expression="execution(* com.luhao.service.*.*(..))"
id="transactionPoint" />
<aop:advisor advice-ref="transactionAdvice" pointcut-ref="transactionPoint" />
</aop:config>
</beans>