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>