spring配置datasource三种方式

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

        第一种方式:每个Bean都有一个代理 
     
            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"> 
     
                        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
               
             
       
   
     
           
                    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
             
       
 
         
         
         
             
       
 
         
                    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">   
                  
                     
               
              
               
               
                   
                    PROPAGATION_REQUIRED 
               
   
           
   
       
   
   
 
     
        第二种方式:所有Bean共享一个代理基类 
     
     
            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"> 
     
                        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
               
             
       
   
     
           
                    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
             
       
 
         
                        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"   
                lazy-init="true" abstract="true">   
               
               
               
               
                   
                    PROPAGATION_REQUIRED   
               
   
           
   
       
     
        
         
         
             
       
 
         
           
                
       
 
   
 
     
    第三种方式:使用拦截器 
     
     
            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"> 
     
                        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
               
             
       
   
     
           
                    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
             
       
  
        
                    class="org.springframework.transaction.interceptor.TransactionInterceptor">   
               
               
               
                   
                    PROPAGATION_REQUIRED   
               
   
           
   
       
 
           
           
               
                   
                    *Dao 
               
   
           
   
               
                   
                    transactionInterceptor   
               
   
           
   
       
   
       
         
         
             
       
 
   
 
     
    第四种方式:使用tx标签配置的拦截器 
     
     
            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"> 
     
         
         
     
                        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
               
             
       
   
     
           
                    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
             
       
 
     
         
             
                 
           
 
       
 
         
         
                            expression="execution(* com.bluesky.spring.dao.*.*(..))" /> 
                            pointcut-ref="interceptorPointCuts" />         
       
       
   
 
     
    第五种方式:全注解 
     
     
            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"> 
     
         
         
     
         
     
                        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
               
             
       
   
     
           
                    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
             
       
 
         
   
 
    此时在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 listUsers() { 
            return this.getSession().createQuery("from User").list(); 
        } 
         
          
    } 

你可能感兴趣的:(spring)