`
computerlibin
  • 浏览: 8313 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring与hibernate集成:所有bean共享一个代理基类(applicationContext.xml文件)

 
阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

<!--在spring中加入外部*.properties文件-->
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>


<!--配置c3p0连接池,利用hibernate提供的c3p0-->
<bean id="myDataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" dependency-check="none">
<property name="driverClass">
<value>${datasource.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${datasource.url}</value>
</property>
<property name="user">
<value>${datasource.username}</value>
</property>
<property name="password">
<value>${datasource.password}</value>
</property>
<property name="acquireIncrement">
<value>${c3p0.acquireIncrement}</value>
</property>
<property name="initialPoolSize">
<value>${c3p0.initialPoolSize}</value>
</property>
<property name="minPoolSize">
<value>${c3p0.minPoolSize}</value>
</property>
<property name="maxPoolSize">
<value>${c3p0.maxPoolSize}</value>
</property>
<property name="maxIdleTime">
<value>${c3p0.maxIdleTime}</value>
</property>
<property name="idleConnectionTestPeriod">
<value>${c3p0.idleConnectionTestPeriod}</value>
</property>
<property name="maxStatements">
<value>${c3p0.maxStatements}</value>
</property>
<property name="numHelperThreads">
<value>${c3p0.numHelperThreads}</value>
</property>
</bean>


<!--配置sessionFactory,一个sessionFactory对应一个数据库-->
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
singleton="true">
<!--关联数据库,将datasource注入到sessionfactory中-->
<property name="dataSource">
<ref local="myDataSource" />
</property>
<!--关联hibernate映射文件-->
<property name="mappingDirectoryLocations">
<list>
<value>
<!--目录com/lisco/pub/domain/hibernate下的所有hibernate映射文件-->
classpath*:/com/lisco/pub/domain/hibernate
</value>
<value>
classpath*:/com/lisco/ypgl/domain/hibernate
</value>
</list>
</property>
<!--配置hibernate.cfg.xml中的属性,这样就可以不用hibernate.cfg.xml文件了-->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${hibernate.dialect}
</prop>
<!--配置是否加载配置文件时自动生成表结构-->
<prop key="hibernate.hbm2ddl.auto">
update
</prop>

<prop key="hibernate.show_sql">
${hibernate.show_sql}
</prop>
<prop key="hibernate.jdbc.fetch_size">
${hibernate.jdbc.fetch_size}
</prop>
<prop key="hibernate.jdbc.batch_size">
${hibernate.jdbc.batch_size}
</prop>
<prop key="hibernate.connection.release_mode">
${hibernate.connection.release_mode}
</prop>
<prop key='hibernate.query.factory_class'>
${hibernate.query.factory_class}
</prop>
</props>
</property>
</bean>


<!--配置事务管理器-->
<bean id="myTransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!--将sessionfactory注入到事务管理器中-->
<!--只要是通过sessionFactory创建的session都纳入到事务管理器的管理范围,
在services中this.getHibernateTemplate()创建的HibernateTemplate就由此事务管理器管理-->
<property name="sessionFactory">
<ref local="mySessionFactory" />
</property>
</bean>


<!--配置事务代理,所有Bean共享一个代理基类-->
<bean id="myTransactionProxyFactoryBean" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<!--注入事务管理器-->
<property name="transactionManager">
<ref bean="myTransactionManager" />
</property>
<!--配置事务的传播特性-->
<property name="transactionAttributes">
<props>
<!--所有以create、update、delete、save开头的方法采用PROPAGATION_REQUIRED的事务策略-->
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<!--其他的方法采用PROPAGATION_REQUIRED而且readOnly的事务策略-->
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>


<!--注册service类-->
<bean id="aqgl_PunishRecService"
class="com.lisco.aqgl.service.impl.DefaultPunishRecService">
<!--配置sessionFactory属性,因为系统中所有的service类都继承于spring的HibernateDaoSupport,sessionFactory属性是HibernateDaoSupport类的属性-->
<property name="sessionFactory">
<ref bean="mySessionFactory" />
</property>
</bean>
<bean id="aqgl_RectificationRecService"
class="com.lisco.aqgl.service.impl.DefaultRectificationRecService">
<property name="sessionFactory">
<ref bean="mySessionFactory" />
</property>
</bean>


<!-- 注册service类的代理,parent属性指明代理类的父类为上面配置的事务代理 -->
<bean id="aqgl_PunishRecService_proxy"
  parent="myTransactionProxyFactoryBean">
<!--配置此代理的目标对象-->
<property name="target">
<ref local="aqgl_PunishRecService" />
</property>
</bean>
<bean id="aqgl_RectificationRecService_proxy"
  parent="myTransactionProxyFactoryBean">
<property name="target">
<ref local="aqgl_RectificationRecService" />
</property>
</bean>





<!--为beanNames属性标注的beans配置拦截器,拦截器由interceptorNames属性定义,value值为-->
<bean name="loggingAutoProxy"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!--配置被拦截的类或者方法-->
<property name="beanNames">
<list>
<value>/ypgl/ExamineAction</value>
<value>/ypgl/RegisteAction</value>
<value>/ypgl/WRegisteAction</value>
<value>/ypgl/WExamineAction</value>
<value>/ypgl/SearchAction</value>
<value>/excelprint/ExcelPrintAction</value>
</list>
</property>
<!--配置拦截器-->
<property name="interceptorNames">
<list>
<value>xtgl_PrivValidate_Adveice</value>
</list>
</property>
</bean>
<!--定义拦截器-->
<bean id="xtgl_PrivValidate_Adveice"
class="com.lisco.xtgl.aspects.PrivValidateAdvice">
</bean>
<!--拦截器的具体实现
public class PrivValidateAdvice implements MethodBeforeAdvice {
/**
* 设置IoC 容器之中的代理的ID标识
*/
public final static String BEAN_PORXY_ID = "xtgl_PrivValidate_Adveice";
public void before(Method method, Object[] args, Object target)
throws Throwable {
HttpServletRequest request = (HttpServletRequest) args[2];
HttpServletResponse response = (HttpServletResponse) args[3];
//判断当前会话是否过期,每个service方法之前都要执行次方法
if(request.getSession() == null || request.getSession().getAttribute("loginUserView") == null) {
if(request.getSession().getAttribute("branch") == null) {
response.sendRedirect("/lisco/common/error/overtime.htm");
}
}
}
}
-->


<!--导入spring其他的配置文件-->
<import resource="com/lisco/xtgl/config/applicationContext-xtgl.xml" />
<import resource="com/lisco/ypgl/config/applicationContext-ypgl.xml" />
<import resource="com/lisco/pub/config/applicationContext-pub.xml" />
<import resource="com/lisco/xmsz/config/applicationContext-xmsz.xml" />
<import resource="com/lisco/excelprint/config/applicationContext-excelprint.xml" />
<import resource="com/lisco/aqgl/config/applicationContext-aqgl.xml" />
<import resource="com/lisco/bzypgl/config/applicationContext-bzypgl.xml" />
<import resource="com/lisco/clsb/config/applicationContext-clsb.xml" />
<import resource="com/lisco/kcgl/config/applicationContext-kcgl.xml" />
<import resource="com/lisco/lygl/config/applicationContext-lygl.xml" />
<import resource="com/lisco/rcjl/config/applicationContext-rcjl.xml" />
<import esource="com/lisco/rygl/config/applicationContext-rygl.xml" />
<import resource="com/lisco/sbgl/config/applicationContext-sbgl.xml" />
<import resource="com/lisco/sysrkgl/config/applicationContext-sysrkgl.xml" />
<import resource="com/lisco/dictionary/config/applicationContext_dictionary.xml" />
</beans>
分享到:
评论

相关推荐

    hibernate错误解决方案

    通过上述对几个常见 Hibernate 错误的解析及解决方法的介绍,我们可以发现大部分问题都与配置文件的设置、实体类的定义以及事务管理有关。在日常开发中,我们应该注意这些细节,以避免不必要的错误发生。同时,对于...

    spring和hibernate整合

    同时,还需要在Spring的配置文件(如applicationContext.xml)中引入Hibernate配置,并定义SessionFactoryBean。 3. **事务管理**:Spring提供了一种声明式事务管理方式,通过`@Transactional`注解可以方便地控制...

    some simple demo about hibernate3.2 and spring2.5

    标题 "some simple demo about hibernate3.2 and spring2.5" 暗示这是一个关于如何集成和使用 Hibernate 3.2 和 Spring 2.5 的简单演示项目。这两个库在Java开发中扮演着重要角色,Hibernate是流行的对象关系映射...

    ssh框架整合详细步骤(spring+struts2+hibernate)

    - 创建Spring的配置文件applicationContext.xml,配置Bean的定义,包括DAO层、Service层以及Action层的Bean。 **Step10:Struts2与Spring的集成** - 在`struts.xml`中,将Action的Class属性修改为Spring的Bean名称...

    Struts2、Spring和Hibernate应用实例.doc

    Spring框架则是一个全面的企业级应用框架,包括依赖注入、AOP(面向切面编程)以及事务管理等,可以与Struts2无缝集成,简化应用的复杂性。Hibernate作为ORM(对象关系映射)框架,简化了数据库操作,将Java对象直接...

    SSH 手动搭建Spring2.5+Strut1.3+Hibernate3.5

    然后,创建Spring的配置文件,如`applicationContext.xml`,配置Bean及其依赖关系。 **2. Struts 1.3** Struts是一个用于构建MVC架构的Java Web框架,它的核心是ActionServlet,处理HTTP请求并调用相应的Action。...

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form标签 ...

    springMVC完美集成hibernate实例

    2. **配置Spring**:创建一个Spring配置文件,如`applicationContext.xml`,配置数据源、Hibernate SessionFactory以及事务管理器。数据源配置是连接到数据库的关键,SessionFactory则是Hibernate的核心组件,用于...

    jsf+hibernate+spring集成案例

    本案例旨在通过集成JSF、Spring 和 Hibernate 框架来构建一个具备登录、浏览、注册、修改、删除及退出功能的Web应用。通过这个示例,我们可以更好地理解这些技术如何协同工作以实现一个完整的应用程序。 **技术栈:*...

    struts2 hibernate spring 整合

    - **数据源和SessionFactory的共享**:确保Spring和Hibernate共用同一个数据源和SessionFactory实例。 5. **测试与优化**: - **单元测试**:编写JUnit测试用例,验证各个组件功能的正确性。 - **性能调优**:...

    Spring 2.0 开发参考手册

    13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

    Struts2、Spring和Hibernate应用实例

    Spring的配置文件(applicationContext.xml),声明bean和依赖;以及Hibernate的配置文件(hibernate.cfg.xml),设定数据库连接和实体类的映射。 通过这种方式,开发者能够利用Struts2的MVC架构实现用户界面的交互...

    Spring+hibernate 单元测试

    - **TestExecutionListener**:一个接口,负责响应 TestContextManager 发布的事件,如测试用例的初始化、测试方法执行前后的操作等。 #### 四、TestExecutionListener 接口及其实现 TestExecutionListener 接口...

    ssh配置步骤详解-你值得拥有

    - **集成Hibernate与Spring**:通过在Spring的配置文件`applicationContext.xml`中定义Hibernate的SessionFactory来实现。 #### 2. 配置Spring应用上下文 - 在项目的类路径下创建`applicationContext.xml`文件,并...

    [浪曦原创]Struts2.Hibernate3.2.Spring2.0整合(风中叶)

    在Spring的配置文件(如applicationContext.xml)中,我们可以定义Bean的实例化、属性注入以及服务的声明。Spring能够管理Struts2 Action和Hibernate DAO的生命周期,通过@Autowired或@Resource注解,可以自动装配...

    ssh框架搭建,供初学者参考

    SSH框架,全称为Struts2 + Spring + Hibernate,是Java Web开发中常用的一种组合,用于构建高效、可扩展的企业级应用程序。本教程将详细介绍如何搭建SSH框架,供初学者参考。 首先,我们来理解SSH框架的组成部分: ...

Global site tag (gtag.js) - Google Analytics