`
xdy2008
  • 浏览: 53889 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring配置datasource三种方式

阅读更多
根据代理机制的不同,总结了五种Spring事务的配置方式,配置文件如下:
Java代码  收藏代码

        第一种方式:每个Bean都有一个代理 
    <?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-2.5.xsd 
               http://www.springframework.org/schema/context 
               http://www.springframework.org/schema/context/spring-context-2.5.xsd 
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 
     
        <bean id="sessionFactory"   
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
            <property name="configLocation" value="classpath:hibernate.cfg.xml" />   
            <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
        </bean>   
     
        <!-- 定义事务管理器(声明式的事务) -->   
        <bean id="transactionManager" 
            class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
            <property name="sessionFactory" ref="sessionFactory" /> 
        </bean> 
         
        <!-- 配置DAO --> 
        <bean id="userDaoTarget" class="com.bluesky.spring.dao.UserDaoImpl"> 
            <property name="sessionFactory" ref="sessionFactory" /> 
        </bean> 
         
        <bean id="userDao"   
            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
               <!-- 配置事务管理器 -->   
               <property name="transactionManager" ref="transactionManager" />      
            <property name="target" ref="userDaoTarget" />   
             <property name="proxyInterfaces" value="com.bluesky.spring.dao.GeneratorDao" /> 
            <!-- 配置事务属性 -->   
            <property name="transactionAttributes">   
                <props>   
                    <prop key="*">PROPAGATION_REQUIRED</prop> 
                </props>   
            </property>   
        </bean>   
    </beans> 
     
        第二种方式:所有Bean共享一个代理基类 
     
    <?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-2.5.xsd 
               http://www.springframework.org/schema/context 
               http://www.springframework.org/schema/context/spring-context-2.5.xsd 
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 
     
        <bean id="sessionFactory"   
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
            <property name="configLocation" value="classpath:hibernate.cfg.xml" />   
            <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
        </bean>   
     
        <!-- 定义事务管理器(声明式的事务) -->   
        <bean id="transactionManager" 
            class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
            <property name="sessionFactory" ref="sessionFactory" /> 
        </bean> 
         
        <bean id="transactionBase"   
                class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"   
                lazy-init="true" abstract="true">   
            <!-- 配置事务管理器 -->   
            <property name="transactionManager" ref="transactionManager" />   
            <!-- 配置事务属性 -->   
            <property name="transactionAttributes">   
                <props>   
                    <prop key="*">PROPAGATION_REQUIRED</prop>   
                </props>   
            </property>   
        </bean>     
        
        <!-- 配置DAO --> 
        <bean id="userDaoTarget" class="com.bluesky.spring.dao.UserDaoImpl"> 
            <property name="sessionFactory" ref="sessionFactory" /> 
        </bean> 
         
        <bean id="userDao" parent="transactionBase" >   
            <property name="target" ref="userDaoTarget" />    
        </bean> 
    </beans> 
     
    第三种方式:使用拦截器 
     
    <?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-2.5.xsd 
               http://www.springframework.org/schema/context 
               http://www.springframework.org/schema/context/spring-context-2.5.xsd 
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 
     
        <bean id="sessionFactory"   
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
            <property name="configLocation" value="classpath:hibernate.cfg.xml" />   
            <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
        </bean>   
     
        <!-- 定义事务管理器(声明式的事务) -->   
        <bean id="transactionManager" 
            class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
            <property name="sessionFactory" ref="sessionFactory" /> 
        </bean>  
        
        <bean id="transactionInterceptor"   
            class="org.springframework.transaction.interceptor.TransactionInterceptor">   
            <property name="transactionManager" ref="transactionManager" />   
            <!-- 配置事务属性 -->   
            <property name="transactionAttributes">   
                <props>   
                    <prop key="*">PROPAGATION_REQUIRED</prop>   
                </props>   
            </property>   
        </bean> 
           
        <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">   
            <property name="beanNames">   
                <list>   
                    <value>*Dao</value> 
                </list>   
            </property>   
            <property name="interceptorNames">   
                <list>   
                    <value>transactionInterceptor</value>   
                </list>   
            </property>   
        </bean>   
       
        <!-- 配置DAO --> 
        <bean id="userDao" class="com.bluesky.spring.dao.UserDaoImpl"> 
            <property name="sessionFactory" ref="sessionFactory" /> 
        </bean> 
    </beans> 
     
    第四种方式:使用tx标签配置的拦截器 
     
    <?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" 
        xmlns:tx="http://www.springframework.org/schema/tx" 
        xsi:schemaLocation="http://www.springframework.org/schema/beans  
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
               http://www.springframework.org/schema/context 
               http://www.springframework.org/schema/context/spring-context-2.5.xsd 
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
     
        <context:annotation-config /> 
        <context:component-scan base-package="com.bluesky" /> 
     
        <bean id="sessionFactory"   
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
            <property name="configLocation" value="classpath:hibernate.cfg.xml" />   
            <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
        </bean>   
     
        <!-- 定义事务管理器(声明式的事务) -->   
        <bean id="transactionManager" 
            class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
            <property name="sessionFactory" ref="sessionFactory" /> 
        </bean> 
     
        <tx:advice id="txAdvice" transaction-manager="transactionManager"> 
            <tx:attributes> 
                <tx:method name="*" propagation="REQUIRED" /> 
            </tx:attributes> 
        </tx:advice> 
         
        <aop:config> 
            <aop:pointcut id="interceptorPointCuts" 
                expression="execution(* com.bluesky.spring.dao.*.*(..))" /> 
            <aop:advisor advice-ref="txAdvice" 
                pointcut-ref="interceptorPointCuts" />         
        </aop:config>       
    </beans> 
     
    第五种方式:全注解 
     
    <?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" 
        xmlns:tx="http://www.springframework.org/schema/tx" 
        xsi:schemaLocation="http://www.springframework.org/schema/beans  
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
               http://www.springframework.org/schema/context 
               http://www.springframework.org/schema/context/spring-context-2.5.xsd 
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
     
        <context:annotation-config /> 
        <context:component-scan base-package="com.bluesky" /> 
     
        <tx:annotation-driven transaction-manager="transactionManager"/> 
     
        <bean id="sessionFactory"   
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
            <property name="configLocation" value="classpath:hibernate.cfg.xml" />   
            <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
        </bean>   
     
        <!-- 定义事务管理器(声明式的事务) -->   
        <bean id="transactionManager" 
            class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
            <property name="sessionFactory" ref="sessionFactory" /> 
        </bean> 
         
    </beans> 
    此时在DAO上需加上@Transactional注解,如下: 
    package com.bluesky.spring.dao; 
     
    import java.util.List; 
     
    import org.hibernate.SessionFactory; 
    import org.springframework.beans.factory.annotation.Autowired; 
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 
    import org.springframework.stereotype.Component; 
     
    import com.bluesky.spring.domain.User; 
     
    @Transactional 
    @Component("userDao") 
    public class UserDaoImpl extends HibernateDaoSupport implements UserDao { 
     
        public List<User> listUsers() { 
            return this.getSession().createQuery("from User").list(); 
        } 
         
          
    } 
分享到:
评论

相关推荐

    spring配置datasource(dbcp方式)

    接着,配置Spring的XML文件,定义一个名为`dataSource`的bean,这个bean将代表我们的DBCP数据源。在`applicationContext.xml`中添加以下代码: ```xml &lt;bean id="dataSource" class="org.apache.commons.dbcp....

    spring中dataSource的配置以及配合IOC的使用

    Spring支持多种方式配置`DataSource`,包括XML配置、Java配置以及基于`@Configuration`和`@Bean`注解的配置。这里我们主要讨论后两种方式。 **1.1 Java配置** 在Java配置中,我们可以通过`@Configuration`注解标记...

    spring mvc配置datasource数据源的三种方式

    spring mvc配置datasource数据源的三种方式,对spring的数据库连接源配置,有很大帮助,使你更加准确地了解数据源、连接池的实际使用方法

    Spring动态切换datasource实现mysql多住多从

    在Spring配置文件中,可以定义多个DataSource bean,每个bean代表一个数据库连接。例如,我们可以创建名为`primaryDataSource`和`secondaryDataSource`的bean,分别对应主库和从库。 2. **使用AOP(面向切面编程)*...

    Spring配置的5种方式

    ### Spring配置的5种方式详解 #### 一、引言 在Java开发领域,特别是针对企业级应用,Spring框架作为一款轻量级的容器管理工具,不仅提供了强大的依赖注入功能,还支持多种事务管理策略。Struts2+Spring+Hibernate...

    SpringBoot框架Datasource注入

    Spring Boot的自动配置机制(Auto Configuration)会在启动时寻找合适的`DataSource`实现,并根据`application.properties`或`application.yml`文件中的配置自动配置`DataSource`。例如,如果我们希望使用HikariCP...

    Spring事务配置的五种方式

    在Spring中,事务配置主要涉及到三个核心组件:DataSource、TransactionManager以及代理机制。下面将详细介绍这五个主要的事务配置方式。 1. **每个Bean都有一个代理** 在这种配置方式中,每个需要事务管理的Bean...

    oesoft_spring_datasource

    Spring Data JPA简化了JPA的使用,提供了一种声明式事务管理方式。在配置数据源后,可以添加`@EnableJpaRepositories`注解开启JPA仓库支持,并通过`@Transactional`注解进行事务管理。 6. **连接池管理**:数据源...

    Spring配置三种数据源及从属性文件中读取DB连接四要素

    总结,Spring配置数据源的方式多样,可以根据项目需求选择合适的方法。通过属性文件读取数据库连接信息,可以方便地管理和更新数据库配置,同时避免硬编码,提高代码的可维护性。在实际开发中,根据业务场景选择单数...

    spring事务配置的五种方式

    1. **基于XML的全局事务配置**:这种方式通过在Spring配置文件中设置`&lt;tx:advice&gt;`和`&lt;aop:config&gt;`元素来实现事务管理。相比于第一种方式,这种方式更加简洁,适用于所有业务逻辑Bean。 2. **基于注解的事务配置**...

    Spring下配置几种常用连接池及配置详解

    本篇文章将详细探讨在Spring环境下配置几种常用的数据库连接池,并提供配置属性的详尽解析和实例应用。 1. **HikariCP** HikariCP是目前非常流行的一款高性能连接池,以其轻量级、高效而受到广泛赞誉。在Spring中...

    Spring 三种依赖注入方式.doc

    Spring 三种依赖注入方式 Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口...

    Spring配置weblogic中的Datasource

    数据源是连接数据库的一种抽象,它提供了一种管理和共享数据库连接的方式,可以有效地管理和控制数据库连接,避免资源浪费,并且支持事务管理和安全管理。 在Spring框架中,我们通常通过Java配置或XML配置来定义...

    spring配置事务五种方式.doc

    本文将详细介绍Spring配置事务的五种方法,每种方法都基于相同的基本组件:DataSource、TransactionManager以及代理机制。理解这些配置方式有助于更好地控制事务在应用程序中的行为。 1. **每个Bean都有一个代理** ...

    SpringBoot使用编程方式配置DataSource的方法

    SpringBoot框架提供了多种方式来配置DataSource,本文主要介绍使用编程方式配置DataSource的方法。这种方法可以让开发者拥有更高级别的控制权,忽略自动配置过程,从而实现自定义的DataSource实现。 在SpringBoot中...

    详解Spring配置事务的五种方式

    本文将详细介绍Spring配置事务的五种方式,以便开发者们更好地理解和应用。 首先,Spring配置事务通常涉及三个关键组件: 1. **DataSource**:数据源,它是连接到数据库的桥梁,负责管理数据库连接。在使用...

    学习Spring笔记_DataSource

    在Spring中配置DataSource,通常通过XML配置文件或者Java配置类来完成。例如,使用Apache Commons DBCP,可以在XML中定义如下: ```xml &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"&gt;...

    Spring 配置各种数据源

    以下将详细阐述Spring配置各种数据源的方法、原理以及优缺点。 1. **单数据源配置** 单一数据源是最常见的配置,适用于大多数简单应用。在Spring Boot中,可以通过`application.properties`或`application.yml`...

    spring配置JNDI数据源

    总结来说,Spring配置JNDI数据源主要涉及两部分:一是应用服务器中JNDI资源的注册,二是Spring配置文件中通过JNDI查找并使用这些资源。这种方式的好处在于解耦,应用不再直接依赖具体的数据库连接配置,而是通过JNDI...

Global site tag (gtag.js) - Google Analytics