1. 程式人生 > >Insight tx:annotation-driven 解析

Insight tx:annotation-driven 解析

/**
 * Parses the  tag.
 */
class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
    
    private static class AopAutoProxyConfigurer {
    
        public static void configureAutoProxyCreator(Element element, ParserContext parserContext) {
            // 解析proxy-target-class,是否採用CGLIB proxy
            AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element);
            
            if (!parserContext.getRegistry().containsBeanDefinition(txAdvisorBeanName)) {
            	// Create the TransactionAttributeSource definition.
            	RootBeanDefinition sourceDef = new RootBeanDefinition("org.springframework.transaction.annotation.AnnotationTransactionAttributeSource");
            	String sourceName = parserContext.getReaderContext().registerWithGeneratedName(sourceDef);
            
            	// Create the TransactionInterceptor definition.
            	RootBeanDefinition interceptorDef = new RootBeanDefinition(TransactionInterceptor.class);
            	// 配置 interceptor.transactionManagerBeanName
            	registerTransactionManager(element, interceptorDef);
            	interceptorDef.getPropertyValues().add("transactionAttributeSource", new RuntimeBeanReference(sourceName));
            	String interceptorName = parserContext.getReaderContext().registerWithGeneratedName(interceptorDef);
            
            	// core! Create the TransactionAttributeSourceAdvisor definition.
            	RootBeanDefinition advisorDef = new RootBeanDefinition(BeanFactoryTransactionAttributeSourceAdvisor.class);
            	advisorDef.getPropertyValues().add("transactionAttributeSource", new RuntimeBeanReference(sourceName));
            	advisorDef.getPropertyValues().add("adviceBeanName", interceptorName);
            	parserContext.getRegistry().registerBeanDefinition(txAdvisorBeanName, advisorDef);
            }
        }
    }
}
...

相關推薦

Insight tx:annotation-driven 解析

/** * Parses the tag. */ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { private static class AopAutoProxyConfigur

新增語句<tx:annotation-driven transaction-manager="txManager"/>報錯

在新增<tx:annotation-driven transaction-manager="txManager"/>程式之前,applicationContext.xml是讀取正常的,其他程式碼也是正確執行的。 因為新接觸spring,所以不知道spring的事務管理器也是需要引入包的,引入包以

已解決:"萬用字元的匹配很全面, 但無法找到元素 'tx:annotation-driven' 的宣告"等

問題出現的場景:專案執行在無網路情況下。 出錯的配置檔案: 報錯的原因是因為宣告的 .xsd 和 jar 包的版本號不對。 我使用的spring-tx版本是3.2.8的,但是配置檔案裡面寫的是4

Spring中使用配置多個tx:annotation-driven

在專案中同時用到了JDBC和Hibernate,分別配置了各自的事務,同時配置了不同的tx:annotation-driven。 但是在實際使用中,只有配置在前的tx:annotation-driven起了作用,另外一個tx:annotation-driven不起作用。

"萬用字元的匹配很全面, 但無法找到元素 'tx:annotation-driven' 的宣告" 的解決方案

在 SpringMVC 的配置檔案中,一般會出現這個錯誤,即萬用字元的匹配很全面, 但無法找到元素 XXX:XXX 。 出現這樣錯誤的原因一般就是因為xml檔案的問題。 如果在標頭檔案中沒有引入 xmlns:mvc="http://www.springframework.org/schema/mvc" 在

"萬用字元的匹配很全面, 但無法找到元素 'tx:annotation-driven' 的宣告" 的解決方案

在 SpringMVC 的配置檔案中,一般會出現這個錯誤,即萬用字元的匹配很全面, 但無法找到元素 XXX:XXX 。 出現這樣錯誤的原因一般就是因為xml檔案的問題。 如果在標頭檔案中沒有引入 xmlns:mvc="http://www.springfr

關於Spring事務<tx:annotation-driven/>的理解

在使用SpringMvc的時候,配置檔案中我們經常看到 annotation-driven 這樣的註解,其含義就是支援註解,一般根

springmvc原始碼解析MvcNamespaceHandler之 <mvc:annotation-driven/>一

開發十年,就只剩下這套架構體系了! >>>   

Spring MVC的default-servlet-handler和annotation-driven配置

spring mvc serlvet 使用spring通常配置url-pattern為/時,會代替web服務器的servlet成為default servlet,靜態資源無法訪問,添加<mvc:default-servlet-handler/>指定web服務器的servlet為defa

<mvc:annotation-driven>新增標簽

rst 我們 mod param acc redirect tro adapter tpi 以下為spring mvc 3.1中annotation-driven所支持的全部配置 <mvc:annotation-driven message-codes-resol

<mvc:annotation-driven>註冊了什麽

span tor pre provides register aop and tco obj 前言 上一篇文章dispatcherservlet初始化中提到,如果沒有配置handlermapping就會采取默認的策略進行配置handlermapping,這篇文章就要講

使用@Controller註解為什麽要配置<mvc:annotation-driven />

讀寫 factory 註釋驅動 ida read patch calendar ber ping <mvc:annotation-driven/>相當於註冊了DefaultAnnotationHandlerMapping和AnnotationMethodHand

轉:<mvc:annotation-driven/>的註解意義

fig ioc容器 註冊 dap explicit json處理 The don eve <mvc:annotation-driven /> 是一種簡寫形式,完全可以手動配置替代這種簡寫形式,簡寫形式可以讓初學都快速應用默認配置方案。<mvc:annota

Springmvc之mvc:annotation-driven標籤

一、<mvc:annotation-driven>標籤的作用:                   

mvc : annotation-driven

Spring家族的配置中這兩個配置的意義,說具體點其實根據標籤的shecma就能看出來,mvc,主要就是為了Spring MVC來用的,提供Controller請求轉發,json自動轉換等功能,而context這個主要是解決spring容器的一些註解。 從百度參考兩個帖子: http

mvc:annotation-driven mvc:default-servlet-handler和 ontext:component-scan base-package三者的關係

<mvc:annotation-driven />mvc:default-servlet-handler/和 <context:component-scan base-package=“com”></context:comp

mvc:annotation-driven註解的作用

一、<mvc:annotation-driven />註解意義 主要就是為了Spring MVC來用的,提供Controller請求轉發,json自動轉換等功能 <mvc:annotation-driven /> 是一種簡寫形式,完全可以手動配置替

SpringMvc之 mvc:annotation-driven標籤

在我們要完成比較複雜的資料型別轉換時(比如:頁面輸入的String型別轉換成Date型別,將頁面的String型別轉換成封裝成一個物件時)需要在SpringMvc的配置檔案中新增<mvc:annotation-driven/>標籤。      那<mvc:

mvc:annotation-driven的作用

<mvc:annotation-driven /> 會自動註冊RequestMappingHandlerMapping、RequestMappingHandlerAdapter 與xceptionHandlerExceptionResolver 三個bean。

大三筆記(mvc:annotation-driven配置與中文亂碼問題)

<mvc:annotation-driven/>: 這個類主要是用來向工廠中註冊了 RequestMappingHandlerMapping  BeanNameUrlHandlerMapping RequestMappingHandlerAdapter