1.1、事务管理 基于xml配置的 1.配置事务管理器 jdbc:DataSourceTransactionManager hibernate:HibernateTransactionManager <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> 2.事务通知(详情、属性) <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="add*"/> <tx:method name="update*"/> <tx:method name="delete*"> <tx:method name="find*" read-only="true"/> </tx:attributes> </tx:advice> 3. AOP编程,ABCD --> ABC <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="execution(* com..*.*(..))"> </aop:config> 基于注解的 xml 配置 1.配置事务管理器 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> 2.将配置事务管理器交予spring管理 <tx:annotation-driven transaction-manager="txManager" proxy-target-class="false"/> 3.目标类上通过注解配置事务详情 @Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.DEFAULT) 1.2、整合Junit 在测试类上 // 让Junit去通知spring加载配置文件 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="classpath:applicationContext.xml") // 让spring容器自动进行注入 @Autowired @Test 1.3、整合web web.xml 中的配置 1.确定xml位置 <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> 2.配置spring 监听器,用于加载xml配置文件 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 1.4、整合ssh 1.hibernate po(domain/bean) 2.dao 层: 法一:需要HibernateTemplate,相当于session操作PO类 --> 必须提供setter方法,让spring进行注入 --> 所以xml中必须要配置模板 save() update() delete() saveOrUpdate() find() 法二:继承HibernateDaoSupport,需要注入SessionFactory,底层自动创建模板 dao方法中使用 this.getHibernateTemplate() 3.service 层:spring配置 <!-- 加载配置文件 JdbcInfo.properties "classpath:" 该前缀表示在src目录下 在配置文件中通过 ${key} 获得配置文件 内容(值) --> <context:property-placeholder location="classpath:com/itheima/f_properties/jdbcInfo.properties"/> <!-- 创建数据源对象,c3p0,需要注入基本四项 --> <bean id="dataSourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 配置 LocalSessionFactoryBean,获得SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.current_session_context_class">thread</prop> </props> </property> <property name="mappingLocations" value="classpath:com/itheima/domain/*.hbm.xml"></property> </bean> <!-- dao spring中删除模板,给dao注入SessionFactory --> <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 事务管理 HibernateTransactionManager,需要注入 SessionFactory --> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" > <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 5.2 、事务详情 ,给ABC进行具体的事务设置 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="register"/> </tx:attributes> </tx:advice> <!-- 5.3、AOP编程,从 ABCD 业务中 筛选出 ABC --> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.itheima.service..*.*(..))"/> </aop:config> 4.web 层:aciton 使用的是:由struts去创建action struts.xml 中的 <action name="" class="全限定类名"> 注意:我们看到的好像是struts去创建action,其实底层使用的是spring去创建action 在Action类中,必须提供service名称与spring配置文件一致。(如果【名称】一致,将自动注入)