日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

mvc:annotation-driven 注解的作用

發布時間:2025/3/12 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mvc:annotation-driven 注解的作用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.自動注冊映射處理器和適配器

這是該注解的主要功能,添加< mvc:annotation-driven/>注解后,容器中會<自動注冊HandlerMapping與HandlerAdapter 兩個bean。省去手動注冊HandlerMapping和HandlerAdapter的步驟。

當配置了< mvc:annotation-driven/>后,Spring就知道了我們啟用注解驅動。然后Spring通過< context:component-scan/>標簽的配置,會自動為我們將掃描到的@Component,@Controller,@Service,@Repository等注解標記的組件注冊到工廠中,來處理我們的請求。

HandlerMapping的實現類的作用:將請求映射到帶@RequestMapping注釋的控制器方法,將URL路徑映射到控制器bean名稱。
HandlerAdapter的實現類的作用:實現類RequestMappingHandlerAdapter,處理請求的適配器,確定調用哪個類的哪個方法,并且構造方法參數,返回值。

在spring mvc 3.1以上,DefaultAnnotationHandlerMapping與AnnotationMethodHandlerAdapter對應變更為:
DefaultAnnotationHandlerMapping -> RequestMappingHandlerMapping
AnnotationMethodHandlerAdapter -> RequestMappingHandlerAdapter
AnnotationMethodHandlerExceptionResolver -> ExceptionHandlerExceptionResolver

2.映射異常處理

處理@ExceptionHandler標注的異常處理函數:在dispatcherServlet中,當用戶未注冊自定義的ExceptionResolver時,自動注冊AnnotationMethodHandlerExceptionResolver來對使用@ExceptionHandler標注的異常處理函數進行解析處理(這也導致當用戶注冊了自定義的exeptionResolver時將可能導致無法處理@ExceptionHandler)。

3.數據校驗

官方文檔解釋:“默認情況下,當在類路徑中檢測到諸如Hibernate Validator之類的Bean驗證提供程序時,使用@EnableWebMvc或<mvc:annotation-driven>會通過LocalValidatorFactoryBean在Spring MVC中自動注冊Bean驗證支持。”

要實現Hibernate Validator/JSR303 校驗(或者其他各種校驗),必須實現SpringMVC提供的一個接口:ValidatorFactory。LocalValidatorFactoryBean是ValidatorFactory的一個實現類。<mvc:annotation-driven ></mvc:annotation-driven>會在springmvc容器中自動加載一個LocalValidatorFactoryBean類,因此可以直接實現數據校驗。

就日常使用來說,比如支持@Valid等一系列校驗注解。

4.數據類型轉換和數據格式化

< mvc:annotation-driven/>支持ConversionService,可以進行常見數據類型的轉換和格式化。

ConversionService:定義了一個統一的API,用于在運行時執行類型轉換邏輯。大多數ConversionService實現還實現ConverterRegistry,該注冊器提供用于注冊轉換器的SPI。在內部,ConversionService實現委派其注冊的轉換器執行類型轉換邏輯。
ConversionService會在應用程序啟動時實例化,然后在多個線程之間共享。
在Spring應用程序中,通常會為每個Spring容器(或ApplicationContext)配置一個ConversionService實例。

FormattingConversionServiceFactoryBean:一個工廠,提供對FormattingConversionService的便捷訪問,該服務配置有用于常見類型(例如數字和日期時間)的轉換器和格式化程序。

①默認:
添加 < mvc:annotation-driven/>后,會默認創建一個ConversionService,即 FormattingConversionServiceFactoryBean。
使用FormattingConversionServiceFactoryBean可以讓SpringMVC支持@NumberFormat和@DateTimeFormat等Spring內部自定義的轉換器。

②:自定義:
默認的ConversionService可以在字符串,數字,枚舉,集合,映射和其他常見類型之間進行轉換。
如果要實現其他的類型轉換,比如將字符串 “LiHua”-23-“男” 轉換為Student實體類,可以自定義類型轉換器。
要支持自己自定義的格式器和轉換器(實現Converter,ConverterFactory或GenericConverter接口),只需自定義相應的類并加入IOC容器,然后通過設置converters屬性將自定義的轉換器注冊到ConversionService即可。

XML配置文件:

<mvc:annotation-driven conversion-service="conversionService"/><bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"><property name="converters"><set><ref bean="employeeConverter"/></set></property></bean>

5.支持使用@RequestBody、@ResponseBody

這個沒什么好說的了。

6.支持靜態資源文件加載和請求映射同時使用

在配置完靜態資源訪問后,如果沒有配置< mvc:annotation-driven/>,springmvc將只能訪問靜態資源,而無法進行請求映射。
因此,有靜態資源文件需要加載的時候,一定要配置< mvc:annotation-driven/>。

< mvc:annotation-driven/>允許將DispatcherServlet映射到“ /”(從而覆蓋了容器默認Servlet的映射),同時仍允許容器默認Servlet處理靜態資源請求。 它使用URL映射“ / **”配置DefaultServletHttpRequestHandler,并且相對于其他URL映射具有最低優先級。

關于靜態資源訪問的配置:
在springmvc中,直接訪問靜態資源會404,因為之前配置的攔截器會將所有的請求通過/攔截,交給mvc的入口DispatcherServlet去匹配@RequestMapping/path,訪問不到就報錯了。

解決:如果是需要mvc處理的,則交給@RequestMapping;如果不需要mvc處理,則使用服務器(Tomcat)默認的servlet處理:對應的請求交給servlet處理,沒有對應的servlet則直接訪問。默認的servlet在Tomcat配置文件\conf/web.xml中。

加載靜態資源的三種方案:
①使用< mvc:default-servlet-handler/>。
②配置/XX /**將靜態資源文件映射到 ResourceHttpRequestHandler 進行處理。

<mvc:resources mapping="/js/**" location="/js/"></mvc:resources><mvc:resources mapping="/css/**" location="/css/"></mvc:resources>1

③激活Tomcat的defaultServlet來處理靜態文件。

<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.css</url-pattern> </servlet-mapping>1234567891011

注意:如果不使用< mvc:resources/>注冊HandlerMapping,而要設置自己的自定義HandlerMapping實例,請確保將其order屬性設置為小于DefaultServletHttpRequestHandler的Integer.MAX_VALUE的值。
因為spring 會先執行 order 值比較小的,默認的應該servlet在最后執行,以便于處理不可能進行請求映射的靜態資源訪問。
補充理解:
DefaultAnnotationHandlerMapping 的 order 屬性值是:0。
<mvc:resources/ >自動注冊的 SimpleUrlHandlerMapping 的 order 屬性值是: 2147483646。
< mvc:default-servlet-handler/>自動注冊的 SimpleUrlHandlerMapping 的 order 屬性值是:2147483647。
因此映射的順序是:注解映射——<mvc:resources/ >映射的靜態資源——< mvc:default-servlet-handler/> 兜底。

7.其他功能

啟用矩陣變量:在MVC命名空間中,<mvc:annotation-driven>元素具有應設置為true的enable-matrix-variables屬性。 默認情況下,它設置為false。

配置異步請求處理:MVC Java配置和MVC名稱空間提供用于配置異步請求處理的選項。 WebMvcConfigurer具有方法configureAsyncSupport,而<mvc:annotation-driven>具有子元素。

創建ContentNegotiationManager:在MVC命名空間中,<mvc:annotation-driven>元素具有content-negotiation-manager屬性,該屬性期望可以使用ContentNegotiationManagerFactoryBean創建ContentNegotiationManager。

數據綁定支持。

…(我應該沒說全,還有別的功能,用到的時候再說吧)

8.< mvc:annotation-driven /> 和< context:annotation-config/>的關系:

< mvc:annotation-driven />:雖然有這么多功能,但主要還是為了Spring MVC來用的,提供Controller請求轉發,json自動轉換等功能。

< context:annotation-config/>:向 Spring 容器注冊 4 個BeanPostProcessor。注冊這4個 BeanPostProcessor的作用,就是為了系統能夠識別相應的注解。常見的如:@ Resource 、@Required、@Autowired等。
不過,其實包掃描配置<context:component-scan base-package=”XX.XX”/> 也提供上述功能,因此當啟動用了包掃描就不必再配置< context:annotation-config/>了。

總結

以上是生活随笔為你收集整理的mvc:annotation-driven 注解的作用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品va无码一区二区三区 | 五月婷婷婷婷 | 国产一级免费看 | 特黄特黄视频 | 69sex久久精品国产麻豆 | 黄色片网站免费看 | 激情六月综合 | 欧美极品少妇xxxxⅹ猛交 | 自拍偷拍20p | 长腿校花无力呻吟娇喘的视频 | 亚洲免费大片 | 欧美黄一级 | 中文字幕18页| 69性影院 | 少妇高潮一区二区三区99欧美 | 日批在线| 国产九色sp调教91 | 老牛影视av牛牛影视av | 女人的天堂av | 国产视频a| 天天av网| 欧美视频久久久 | 欧美影院一区二区三区 | 国产激情综合五月久久 | 亚洲人人爱 | 亚洲五码av | 色姐| 强制高潮抽搐哭叫求饶h | 日韩视频在线观看一区二区三区 | 人妻一区二区三区在线 | 色噜噜狠狠一区二区三区牛牛影视 | 中文字幕一区电影 | 一区二区视频在线免费观看 | 日韩电影一二三区 | 黄色污污视频网站 | 久操香蕉 | 国产探花视频在线观看 | 日韩欧美99 | 久久xx | 久久免费看片 | 黄色一级视频在线观看 | 欧美成年人视频在线观看 | 午夜时刻免费入口 | 精品人妻一区二区三区四区 | 午夜剧场免费在线观看 | 在线看网站 | 亚洲激情在线播放 | 国产一二三在线 | 在线1区 | 欧美一级视频免费观看 | 日韩毛片网 | 99精品一级欧美片免费播放 | 超碰免费公开在线 | 欧美一区二区视频在线 | 少妇av一区 | 亚洲 日本 欧美 中文幕 | 日韩av片在线看 | 怡红院男人天堂 | 国产日韩欧美在线 | 日韩免费三级 | 国产三级一区二区 | 成年人看的羞羞网站 | 久久久久久久麻豆 | 精品小视频在线观看 | 深夜福利国产精品 | 粉嫩小泬无遮挡久久久久久 | 在线观看你懂的网址 | aa片在线观看视频在线播放 | 男人添女人下部高潮视频 | 91在线综合 | 丰满大乳奶做爰ⅹxx视频 | 葵司免费一区二区三区四区五区 | 欧美一级高清片 | 精品福利视频导航 | 日本免费a级片 | 亚洲在线观看免费 | 极品女神无套呻吟啪啪 | 欧美日比视频 | 国产香蕉在线观看 | 91爽爽 | 欧美另类视频在线观看 | 精品无码三级在线观看视频 | 老头糟蹋新婚少妇系列小说 | 好紧好爽再浪一点视频 | 欧美日韩a√ | 狠狠躁日日躁夜夜躁2022麻豆 | 日日夜夜骑| 高清国产一区二区 | 欧美精品成人在线 | jizz中国少妇高潮出水 | 黄色小视频免费看 | 国产人成在线 | 懂色av一区二区夜夜嗨 | 日韩91精品 | 亚洲天堂资源在线 | 日韩精品第一页 | 亚洲成a人片在线 | 精品人妻少妇嫩草av无码 | 欧洲女性下面有没有毛发 |