Spring的學習-day04

Spring的學習-day04

1.applicationContext.xml中的配置

  • 基於註解的連接池

    jdbc.user=root
    jdbc.password=root
    jdbc.jdbcUrl=jdbc:mysql://localhost:3306/online-test
    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.maxPoolSize=10
    jdbc.minPoolSize=5
    jdbc.initialPoolSize=5
    
    <!-- 掃描外部文件 -->
    <context:property-placeholder location="classpath:db.properties"/>
    
    <!-- 開啓掃描註解 -->
    <context:component-scan base-package="cn.itheima"/>
    
    <!-- 配置數據源(即連接池) -->
    <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
    	<property name="user" value="${jdbc.user}"></property>
    	<property name="password" value="${jdbc.password}"></property>
    	<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    	<property name="driverClass" value="${jdbc.driverClass}"></property>
    	<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    	<property name="minPoolSize" value="${jdbc.minPoolSize}"></property>
    	<property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property>
    </bean>
    
  • 基於註解的事務管理

     <!-- 1.配置事務管理器  -->
    <bean class="org.springframework.jdbc.datasource.init.DataSourceInitializer" id="transactionManager">
    	<property name="dataSource" ref="dataSource"></property>
    </bean>
     
     <!-- 2.開啓註解事務支持,默認引用的transaction-manager是transactionManager -->
     <tx:annotation-driven transaction-manager="transactionManager"/>
     
     <!-- 註解完成事務詳解:@Transaction註解 ,該註解可用加在方法上,也可以加在類上
     		@Transaction的詳解:
     			(1)propagation屬性:用來設置事務的傳播行爲
     			   事務的傳播行爲:一個方法運行在一個開啓了事務的方法中時,當前方法是使用原有的事務
     			   還是開啓新的事務?這就叫事務的傳播行爲
     			 propagation的默認值爲:Propagation.REQUIRED(默認使用現有的事務)
     			 propagation的值:Propagation.REQUIRED_NEW(不使用現有的事務,而開啓自身的事務)
     			(2)isolation:用來設置事務的隔離級別
     			   -REPEATABLE_READ:可重複讀,MySql默認
     			   -READ_COMMITTED:讀已提交,Oracle默認
     			   總結:一般使用READ_COMMITTED
     			(3)rollbackFor:遇到什麼異常回滾,值是異常的類型
     			   rollbackForClassName:遇到什麼異常回滾,值是異常的名字
     			   noRollbackFor:設置不回滾,值是異常的類型
     			   noRollbackForClassName:設置不回滾,值是異常的名字
     			(4)readonly:設置只讀屬性,通常情況下如果是查詢的操作,該屬性
     			設置readonly爲true,如果不是可用設置readonly爲false   
     			(5)timeout:用來設置超時的時間,單位爲秒
      -->
    
  • 基於xml的事務管理

    <!-- 3.配置事務管理類 -->
    <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
    	<property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <!-- 4.配置事務通知 -->
    <tx:advice transaction-manager="transactionManager" id="txAdvice">
    	<tx:attributes>
    		<!-- 配置方法對應的隔離級別以及事務的傳播行爲 -->
    		<tx:method name="save" isolation="READ_COMMITTED" propagation="REQUIRED"/>
    	</tx:attributes>
    </tx:advice>
    
    <!-- 5.配置切入點 -->
    <aop:config>
    	<aop:pointcut expression="execution(* cn.itheima.transaction.*.*(..))"                  id="pointcut"/>
    	<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
    </aop:config>
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章