Spring學習筆記(八)-事務控制-基於AspectJ實現和與Web結合
阿新 • • 發佈:2020-12-12
Spring學習筆記(八)-事務控制-基於AspectJ實現和與Web結合
<!-- spring中基於XML的宣告式事務控制配置步驟 1、配置事務管理器 2、配置事務的通知 此時我們需要匯入事務的約束 tx名稱空間和約束,同時也需要aop的 使用tx:advice標籤配置事務通知 屬性: id:給事務通知起一個唯一標識 transaction-manager:給事務通知提供一個事務管理器引用 3、配置AOP中的通用切入點表示式 4、建立事務通知和切入點表示式的對應關係 5、配置事務的屬性 是在事務的通知tx:advice標籤的內部 --> <!-- 配置事務管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置事務的通知--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!-- 配置具體的業務方法的屬性--> <tx:attributes> <!--name:業務方法的名稱,1.具體的業務方法;2.帶部分萬用字元;3.*--> <tx:method name="*" propagation="REQUIRED" read-only="false"/> <tx:method name="find*" propagation="SUPPORTS" read-only="true"/> </tx:attributes> </tx:advice> <!-- 配置aop--> <aop:config> <!-- 配置切入點表示式--> <aop:pointcut id="pt1" expression="execution(* com.Xxx.service.impl.*.*(..))"/> <!--建立切入點表示式和事務通知的對應關係 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/> </aop:config>
Spring與Web
-
在web專案中,Spring容器應只建立一次,並被所有Servlet共享
-
解決方法:使用ServletContextListener,其存在兩個方法分別在web專案啟動和關閉時執行,且建立好的容器放置於web應用的ServletContext域中
-
ContextLoaderListener,由Spring提供的ServletContextListener實現類
-
使用方法:
-
Maven配置
-
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.1</version> </dependency>
-
web.xml配置
-
<!--上下文引數,用於給監聽器提供引數,自定義配置檔案的路徑--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!--建立容器時預設載入WEB-INF目錄下的applicationContext.xml--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
-
-