Spring事务管理-aop切入配置

来源:互联网 发布:河南gov域名注册 编辑:程序博客网 时间:2024/04/29 06:03

<?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: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/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"> 

   <bean id="testAction" class="test.action.Stuts2ActionTest"> 

       <property name="service" ref="templatesService"></property> 

  </bean> 

   <bean id="templatesService"      class="test.service.impl.TaoTemplatesServiceImpl"> 

 <property name="dao" ref="templatesDAO" /> 

  </bean> 

    <bean id="templatesDAO" class="test.dao.impl.TaoTemplatesDAOImpl"> 

 <property name="sessionFactory" ref="sessionFactory"></property> 

</bean>   

  <!--定义数据源--> 

<bean id="dataSource"  class="org.apache.commons.dbcp.BasicDataSource"> 

 <!--      定义数据库驱动--> 

<property name="driverClassName"> 

     <value>oracle.jdbc.driver.OracleDriver</value> 

   </property> 

 <!--      定义数据库url--> 

<property name="url"> 

   <value>jdbc:oracle:thin:@192.168.1.96:1521:yxdb</value> 
       </property> 
     <!--      定义数据库用户名--> 
       <property name="username"> 
            <value>yxuser</value> 
       </property> 
      <!--      定义数据库密码--> 
     <property name="password"> 
            <value>yxuser</value> 
       </property> 
    </bean> 

    <!--定义一个hibernate的SessionFactory--> 
   <bean id="sessionFactory" 
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
       <!--      定义SessionFactory必须注入DataSource--> 
        <property name="dataSource"> 
           <ref local="dataSource" /> 
       </property> 
       <property name="mappingResources"> 
          <list> 
              <!--以下用来列出所有的PO映射文件--> 
               <value>test/mapping/Tao_Templates.hbm.xml</value> 
           </list> 
        </property> 
        <property name="hibernateProperties"> 
           <props> 
               <prop key="hibernate.dialect"> 
                      org.hibernate.dialect.Oracle10gDialect  
              </prop> 
              <prop key="hibernate.show_sql">true</prop> 
                  <!--此处用来定义hibernate的SessionFactory的属性:  
                       不同数据库连接,启动时选择create,update,create-drop --> 
               <prop key="hibernate.hbm2ddl.auto">update</prop> 
           </props> 
        </property> 
    </bean> 
 
    <bean id="transactionManager" 
       class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
       <property name="sessionFactory"> 
            <ref bean="sessionFactory" /> 
       </property> 
   </bean>  
 <!--
<bean id="transactionManager"
       class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="jamon-proxy-DataSource"></property>
   </bean>
 -->
 <!-- 事务通知 -->  
   <tx:advice id="txAdvice" transaction-manager="transactionManager">  
        <tx:attributes>  
            <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception,SmoException,BmoException,DaoException" />  
            <tx:method name="del*" propagation="REQUIRED" rollback-for="Exception,SmoException,BmoException,DaoException" />  
           <tx:method name="upd*" propagation="REQUIRED" rollback-for="Exception,SmoException,BmoException,DaoException" />
  <tx:method name="*" propagation="SUPPORTS" read-only="true" />
  </tx:attributes>
 </tx:advice>
  <!-- Spring AOP config
 解释一下(* com.evan.crm.service.*.*(..))中几个通配符的含义:
  第一个 * —— 通配 任意返回值类型
  第二个 * —— 通配 包com.evan.crm.service下的任意class
  第三个 * —— 通配 包com.evan.crm.service下的任意class的任意方法
 第四个 .. —— 通配 方法可以有0个或多个参数
  -->
  <aop:config>
 <aop:pointcut id="servicesPointcut" expression="execution(* com.jstrd.mss..*SMOImpl.*(..))" />
  <aop:advisor advice-ref="bluePrint.txAdvice" pointcut-ref="servicesPointcut" /> 
 </aop:config>  

 </beans>