1.applicationContext-base.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"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
<!-- PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java Properties文件中去。
在XML文件中用${key}替换指定的properties文件中的值。这样的话,只需要对properties文件进行修改,而不用对xml配置文件进行修改。
-->
 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>classpath:com/init.properties</value>
   </list>
  </property>
  <property name="fileEncoding">
   <value>UTF-8</value>
  </property>
 </bean>
 
<!-- dbcp数据库连接池-->
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${classname}"></property>
  <property name="url" value="${url}"></property>
  <property name="username" value="${username}"></property>
  <property name="password" value="${password}"></property>

<property name="maxActive" value="${maxActive}"></property>
  <property name="maxIdle" value="${maxIdle}"></property>
  <property name="maxWait" value="${maxWait}"></property>
  <property name="minIdle" value="${minIdle}"></property>
 </bean>
<!-- 配置sessionFactory-->
 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource"></property>
  <property name="mappingResources">
   <list>
    <value>com/po/Area.hbm.xml</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <!--    oracle数据库方言-->
    <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
    <prop key="hibernate.show_sql">true</prop>
   </props>
  </property>
 </bean>
<!-- 配置事务-->
 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
<!-- 配置事务拦截器-->
 <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
  <property name="transactionManager" ref="transactionManager"></property>
  <!--  配置事务属性-->
  <property name="transactionAttributes">
   <props>
    <prop key="add*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    <prop key="find*">PROPAGATION_REQUIRED</prop>
    <prop key="search*">PROPAGATION_REQUIRED</prop>
    <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>
<!-- 通过spring中注入的bean的名称进行拦截-->
 <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  <property name="interceptorNames">
   <list>
    <value>transactionInterceptor</value>
   </list>
  </property>
  <property name="beanNames">
   <list>
    <value>*Service</value>
   </list>
  </property>
 </bean>
<!-- 配置dao层,注入sessionFactory,dao层直接继承HibernateDaoSupport类即可(HibernateDaoSupport类中已经实现了getHibernateTemplate())-->
 <bean id="areaDao" class="com.dao.AreaDaoImpl">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 
 <bean id="areaService" class="com.service.AreaServiceImpl">
  <property name="areaDao" ref="areaDao"></property>
 </bean>
 
</beans>

2.init.properties文件

classname=oracle.jdbc.driver.OracleDriver
url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl
username=farm
password=farm
maxActive=1000
maxIdle=100
maxWait=200
minIdle=10
# Resources for parameter 'com.init'
# Project farm2
3.web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:applicationContext-base.xml</param-value>
  </context-param>
  <context-param>
   <param-name>webAppRootKey</param-name>
   <param-value>web.root2</param-value>
  </context-param>
  <context-param>
   <param-name>log4jConfigLocation</param-name>
   <param-value>/WEB-INF/log4j.xml</param-value>
  </context-param>
  <listener>
   <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 
 
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 4.AreaDaoImpl.java文件

package com.dao;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.po.Area;

public class AreaDaoImpl extends HibernateDaoSupport implements IAreaDao {

public void addArea(Area area) {
  // TODO Auto-generated method stub
  getHibernateTemplate().save(area);

}

public void deleteArea(int id) {
  // TODO Auto-generated method stub
  String hql ="delete from Area where id=?";
  getHibernateTemplate().bulkUpdate(hql, new Object[]{id});

}

public void updateArea(Area area) {
  // TODO Auto-generated method stub
  getHibernateTemplate().update(area);
 }

public Area findArea(int id) {
  // TODO Auto-generated method stub
  return getHibernateTemplate().load(Area.class, id);
 }

public List<Area> searchAreaList(Area area) {
  // TODO Auto-generated method stub
  String hql ="select * from Area where state=? and alevel=?";
  return getHibernateTemplate().find(hql, new Object[]{area.getState(),area.getAlevel()});
 }

}

5.测试类TestArea.java

package test;

import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.po.Area;
import com.service.IAreaService;

public class TestArea{
 private IAreaService areaService;
 {
  BeanFactory factory = new ClassPathXmlApplicationContext("classpath:applicationContext-base.xml");
  areaService=(IAreaService) factory.getBean("areaService");
 }
 @Test
 public void addArea(){
  Area area = new Area();
  area.setAid("111");
  area.setAlevel(0);
  area.setAname("hy");
  area.setCode("000");
  area.setPid("000");
  area.setState(0);
  areaService.addArea(area);
 }
}

6.log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
  <param name="target" value="System.out" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern"
    value="%d %t %-5p (%F:%L) - %m%n" />
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
            <param name="levelMin" value="debug" /> 
            <param name="levelMax" value="warn" /> 
            <param name="AcceptOnMatch" value="true" /> 
        </filter>
 </appender>

<root>
  <priority value="info" />
 
  <appender-ref ref="STDOUT" />
 </root>
 <category name="com.opensymphony.xwork2.ognl.OgnlValueStack">
  <priority value="error" />
 </category>
</log4j:configuration>

spring3+hibernate3+(dbcp+oracle+拦截器事务配置)整合(一)的更多相关文章

  1. Spring Boot 第六弹,拦截器如何配置,看这儿~

    持续原创输出,点击上方蓝字关注我吧 目录 前言 Spring Boot 版本 什么是拦截器? 如何自定义一个拦截器? 如何使其在Spring Boot中生效? 举个栗子 思路 根据什么判断这个接口已经 ...

  2. Spring Boot第七弹,别再问我拦截器如何配置了!!!

    持续原创输出,点击上方蓝字关注我吧 前言 上篇文章讲了Spring Boot的WEB开发基础内容,相信读者朋友们已经有了初步的了解,知道如何写一个接口. 今天这篇文章来介绍一下拦截器在Spring B ...

  3. springmvc自定义的拦截器以及拦截器的配置

    一.自定义拦截器 Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口. 二.HandlerIn ...

  4. Struts2拦截器的配置

    struts2拦截器interceptor的三种配置方法方法1. 普通配置法 <struts> <package name="struts2" extends=& ...

  5. struts2框架之自定义拦截器和配置

    struts框架中也存在拦截器,只不过系统自动调用.框架自带的拦截器的配置文件所在的位置为: java Resources--->Libraries--->struts2-core-2.3 ...

  6. springmvc拦截器的配置、使用

    springmvc拦截器的配置.使用:1.自定义拦截器,实现HandlerInterceptor接口. package com.bybo.aca.web.interceptor; import jav ...

  7. 转载 - Struts2 拦截器详细配置过程

    出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Inter ...

  8. MethodFilterInterceptor(方法拦截器)配置excludeMethors

    由于该类有setExcludeMethods方法,因此在xml中可以配置一个excludeMethods参数 刚开始老是拦截不成功,tomcat显示这个参数没找到,后来终于找到错误:不应该在拦截器栈中 ...

  9. TZ_06_SpringMVC_拦截器的配置

    1. 拦截器的概述 1>. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术. 2>. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方 ...

随机推荐

  1. 扩展vbox硬盘大小

    1.使用VboxManage list hdds查看所有安装的虚拟机信息   2.找到你要扩展硬盘容量虚拟机的UUID,使用modifyhd命令扩展硬盘大小 VBoxManage modifyhd U ...

  2. 从类的继承看socketserver源码

    当我们拿到一份python源代码,我们要怎么去看呢? 下面我们以socketserver为例,看下面的一段代码: #!/usr/bin/env python # -*- coding: UTF-8 - ...

  3. CloudStack API访问权限控制

    在我写开始之前,请先看下CS中国社区的一篇文章http://www.cloudstack-china.org/2012/12/1465.html,在第1点里讲了关于权限级别,command属性文件位置 ...

  4. commons.fileupload简单应用

    导入包: commons-fileupload-1.3.1.jar commons-io-2.4.jar commons-fileupload依赖于commons-io,commons-io-2.4必 ...

  5. sizeof与类,继承,virtual的种种

    对虚继承层次的对象的内存布局,在不同编译器实现有所区别. 首先,说说GCC的编译器. 它实现比较简单,不管是否虚继承,GCC都是将虚表指针在整个继承关系中共享的,不共享的是指向虚基类的指针. clas ...

  6. Ubuntu下配置NFS服务

    Table of Contents 1.下载相关软件 2.建立共享目录 3.修改该配置文件 4.重启服务 5.测试服务器 6.测试客户端 测试系统:Ubuntu8.04 1.下载相关软件 使用如下命令 ...

  7. 开发反模式 - SQL注入

    一.目标:编写SQL动态查询 SQL常常和程序代码一起使用.我们通常所说的SQL动态查询,是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. string sql = SELECT * FR ...

  8. Android Listview异步动态加载网络图片

    1.定义类MapListImageAndText管理ListViewItem中控件的内容 package com.google.zxing.client.android.AsyncLoadImage; ...

  9. Android模仿微信语音聊天功能

    项目效果如下: 项目目录结构如下: 代码如下: AudioManager.java import java.io.File; import java.io.IOException; import ja ...

  10. 利用智能手机(Android)追踪一块磁铁(一)

    之前看到一个外国人用iPhone做了一个追踪磁铁的Demo感觉不错(参考视频:http://v.youku.com/v_show/id_XODM2MjczNzE2.html),然后我就参考做了一个An ...