1.SpringBoot WebMvcConfigurer详解
2.Spring boot ä¸ WebMvcConfigurationSupport 详解
3.SpringBoot--WebMvcConfigurer详解
4.WebMvcConfigurer详解
5.WebMvcConfigurationSupportåWebMvcConfigurerçåºå«
SpringBoot WebMvcConfigurer详解
WebMvcConfigureré ç½®ç±»å ¶å®æ¯ Spring å é¨çä¸ç§é ç½®æ¹å¼ï¼éç¨ JavaBean çå½¢å¼æ¥ä»£æ¿ä¼ ç»ç xml é ç½®æ件形å¼è¿è¡é对æ¡æ¶ä¸ªæ§åå®å¶ï¼å¯ä»¥èªå®ä¹ä¸äºHandlerï¼Interceptorï¼ViewResolverï¼MessageConverterãåºäºjava-basedæ¹å¼çspring mvcé ç½®ï¼éè¦å建ä¸ä¸ªé 置类并å®ç°WebMvcConfigurer æ¥å£ï¼å¨Spring Boot 1.5çæ¬é½æ¯é éåWebMvcConfigurerAdapterçæ¹æ³æ¥æ·»å èªå®ä¹æ¦æªå¨ï¼æ¶æ¯è½¬æ¢å¨çãSpringBoot 2.0 åï¼è¯¥ç±»è¢«æ 记为@Deprecatedï¼å¼ç¨ï¼ãå®æ¹æ¨èç´æ¥å®ç°WebMvcConfigureræè ç´æ¥ç»§æ¿WebMvcConfigurationSupportï¼æ¹å¼ä¸å®ç°WebMvcConfigureræ¥å£ï¼æ¨èï¼ï¼æ¹å¼äºç»§æ¿WebMvcConfigurationSupportç±»ï¼å ·ä½å®ç°å¯çè¿ç¯æç« ã /fmwind/article/details/
常ç¨çæ¹æ³ï¼
以ååSpringMVCçæ¶åï¼å¦æéè¦è®¿é®ä¸ä¸ªé¡µé¢ï¼å¿ é¡»è¦åControllerç±»ï¼ç¶åååä¸ä¸ªæ¹æ³è·³è½¬å°é¡µé¢ï¼æè§å¥½éº»ç¦ï¼å ¶å®éåWebMvcConfigurerä¸çaddViewControllersæ¹æ³å³å¯è¾¾å°ææäº
å¼çæåºçæ¯ï¼å¨è¿ééåaddViewControllersæ¹æ³ï¼å¹¶ä¸ä¼è¦çWebMvcAutoConfigurationï¼Springbootèªå¨é ç½®ï¼ä¸çaddViewControllersï¼å¨æ¤æ¹æ³ä¸ï¼Spring Bootå°â/âæ å°è³index.htmlï¼ï¼è¿ä¹å°±æå³çèªå·±çé ç½®åSpring Bootçèªå¨é ç½®åæ¶ææï¼è¿ä¹æ¯æ们æ¨èæ·»å èªå·±çMVCé ç½®çæ¹å¼ã
æ¯å¦ï¼æ们æ³èªå®ä¹éæèµæºæ å°ç®å½çè¯ï¼åªééåaddResourceHandlersæ¹æ³å³å¯ã
注ï¼å¦æ继æ¿WebMvcConfigurationSupportç±»å®ç°é ç½®æ¶å¿ é¡»è¦éå该æ¹æ³ï¼å ·ä½è§å ¶å®æç«
æ¤æ¶ä¼æ³¨åä¸ä¸ªé»è®¤çHandlerï¼DefaultServletHttpRequestHandlerï¼è¿ä¸ªHandlerä¹æ¯ç¨æ¥å¤çéææ件çï¼å®ä¼å°è¯æ å°/ãå½DispatcherServeltæ å°/æ¶ï¼/ å/ æ¯æåºå«çï¼ï¼å¹¶ä¸æ²¡ææ¾å°åéçHandleræ¥å¤ç请æ±æ¶ï¼å°±ä¼äº¤ç»DefaultServletHttpRequestHandler æ¥å¤çã注æï¼è¿éçéæèµæºæ¯æ¾ç½®å¨webæ ¹ç®å½ä¸ï¼èéWEB-INF ä¸ã
ããå¯è½è¿éçæè¿°æç¹ä¸å¥½æï¼æèªå·±ä¹è¿ä¹è§å¾ï¼ï¼æ以ç®å举个ä¾åï¼ä¾å¦ï¼å¨webrootç®å½ä¸æä¸ä¸ªå¾çï¼1.png æ们ç¥éServeltè§èä¸webæ ¹ç®å½ï¼webrootï¼ä¸çæ件å¯ä»¥ç´æ¥è®¿é®çï¼ä½æ¯ç±äºDispatcherServleté ç½®äºæ å°è·¯å¾æ¯ï¼/ ï¼å®å ä¹æææç请æ±é½æ¦æªäºï¼ä»è导è´1.png 访é®ä¸å°ï¼è¿æ¶æ³¨åä¸ä¸ªDefaultServletHttpRequestHandler å°±å¯ä»¥è§£å³è¿ä¸ªé®é¢ãå ¶å®å¯ä»¥ç解为DispatcherServletç ´åäºServletçä¸ä¸ªç¹æ§ï¼æ ¹ç®å½ä¸çæ件å¯ä»¥ç´æ¥è®¿é®ï¼ï¼DefaultServletHttpRequestHandleræ¯å¸®å©åå½è¿ä¸ªç¹æ§çã
è¿ä¸ªæ¹æ³æ¯ç¨æ¥é ç½®è§å¾è§£æå¨çï¼è¯¥æ¹æ³çåæ°ViewResolverRegistry æ¯ä¸ä¸ªæ³¨åå¨ï¼ç¨æ¥æ³¨åä½ æ³èªå®ä¹çè§å¾è§£æå¨çãViewResolverRegistry 常ç¨çå 个æ¹æ³ï¼ /fmwind/article/details/
è·¨åèµæºå ±äº«åæ¥é½æ¯çé¨çéæ±ï¼æ们å¯ä»¥ä½¿ç¨ CORS æ¥å¿«éå®ç° è·¨å访é®ï¼åªéè¦å¨æå¡ç«¯è¿è¡ææå³å¯ï¼æ éå¨å端添å é¢å¤ç设置
ç®å说ï¼CORSæ¯ä¸ç§è®¿é®æºå¶ï¼è±æå ¨ç§°: Cross-Origin Resource Sharingï¼å³æ们说çè·¨åèµæºå ±äº«ãå½ä¸ä¸ªèµæºä»ä¸è¯¥èµæºæ¬èº«æå¨æå¡å¨ä¸åçåæ端å£è¯·æ±ä¸ä¸ªèµæºæ¶ï¼èµæºä¼åèµ·ä¸ä¸ªè·¨åHTTP请æ±ãæ¯å¦ï¼å¨ä¸ä¸ªååä¸çç½é¡µä¸ï¼è°ç¨å¦ä¸ä¸ªååä¸çèµæºã
å¯¹äº CORSçè·¨å请æ±ï¼ä¸é¢çæ¹å¼æ¯éåwebMvcConfigurerå®ç°å ¨å±é ç½®ï¼è¿éå±å¼ä¸ä¸ï¼ä¸»è¦æ以ä¸å ç§æ¹å¼å¯ä¾éæ©ï¼
å¨ä»»æé 置类ï¼è¿åä¸ä¸ª æ°ç CorsFIlter Bean ï¼å¹¶æ·»å æ å°è·¯å¾åå ·ä½çCORSé 置路å¾ã
åèä¸é¢ï¼æ¤å¤çç¥
å¨æ§å¶å¨ä¸ä½¿ç¨æ³¨è§£ @CrossOrigin:
å¨Controlleræ¹æ³ä¸ä½¿ç¨æ³¨è§£ @CrossOrigin:
ä½¿ç¨ HttpServletResponse 对象添å ååºå¤´(Access-Control-Allow-Origin)æ¥ææåå§åï¼è¿é Originçå¼ä¹å¯ä»¥è®¾ç½®ä¸º "*",源码è¡¨ç¤ºå ¨é¨æ¾è¡ã
Spring boot ä¸ WebMvcConfigurationSupport 详解
æ°åäºä¸ä¸ªç®å项ç®ï¼éé¢éè¦æä¾ä¸ä¸ªæ¥å£ç»ç¬¬ä¸æ¹è®¿é®ï¼ç¬¬ä¸æ¹è¦æ±çæ¥å£ååºæ¶é´ä¸º3sï¼å æ¤éè¦å¯¹æ¥å£è¿è¡æ¶é´çè®°å½ ä»¥ä¸æ¯å ·ä½ç使ç¨ãå®ç°HandlerInterceptorè¿ä¸ªæ¥å£
以ä¸ä¸¤æ¥å®æï¼å³å®ææ¦æªå¨ç注åã该æ¦æªå¨ä¼å¯¹ /sell_record/** 请æ±è·¯å¾è¿è¡æ¦æªã
controlleræµè¯ç±»
ä¸ä¸ªç®åçæ¦æªå¨å°±åå®äº~
å ¶ä¸ç¨çæ¯è¾å¤çæ¯ä¸ä¸ä¸ä¸ªæ¥å£ï¼
éæèµæºå¤ç
é常éè¦çæ示ï¼Springboot ä¸åªè½æä¸ä¸ª WebMvcConfigurationSupport é 置类æ¯çæ£èµ·ä½ç¨çï¼å¯¹äºè¿ä¸ªé®é¢ï¼å ¶å®å¯ä»¥éè¿ implements WebMvcConfigurer æ¥è§£å³ï¼å¤ä¸ªä¸åçç±»å®ç°è¿ä¸ªæ¥å£åçé ç½®é½å¯ä»¥æ£å¸¸è¿è¡ã
å ·ä½å¯åè [ Spring Bootä¸åªè½æä¸ä¸ªWebMvcConfigurationSupporté 置类
SpringBoot--WebMvcConfigurer详解
WebMvcConfigurer配置类在Spring框架中提供了JavaBean方式实现针对框架的个性化定制,简化了传统xml配置文件的源码繁琐。配置类需实现WebMvcConfigurer接口,源码Spring Boot 1.5版本以前通过重写WebMvcConfigurerAdapter的源码rails 源码方法来添加自定义拦截器、消息转换器等。源码Spring Boot 2.0以后推荐直接实现WebMvcConfigurer或继承WebMvcConfigurationSupport。源码 常用方法包括:addInterceptors: 添加拦截器
addViewControllers: 自定义页面跳转,源码简化SpringMVC中访问页面的源码代码。
addResourceHandlers: 静态资源映射,源码允许自定义静态资源目录,源码方便管理和访问。源码liferay源码开发
configureDefaultServletHandling: 配置默认静态资源处理器,源码解决静态资源访问问题。源码
configureViewResolvers: 配置视图解析器,源码自定义视图解析逻辑。源码
configureContentNegotiation: 配置内容裁决参数,空格源码nbsp解决数据格式协商问题。
addCorsMappings: 处理跨域问题,允许特定域名访问。
configureMessageConverters: 配置信息转换器,处理请求和响应的tensorflow查源码数据格式转换。
在实现WebMvcConfigurer接口时,`addResourceHandlers`方法用于配置静态资源映射路径,例如将`file/static/`目录下的资源映射到项目根目录`E:\\springboot\\`下,允许通过URL直接访问。若使用`WebMvcConfigurationSupport`类,开心刮刮卡源码需确保重写了`addResourceHandlers`方法。此外,`addResourceHandler`方法中路径配置需完整,即`file/`和`static/`均需明确指定。 `configureDefaultServletHandling`方法则用于注册默认静态资源处理器,如`DefaultServletHttpRequestHandler`,以处理根目录下的静态资源请求,解决由于DispatcherServlet配置映射路径导致的静态资源无法访问问题。 通过`configureViewResolvers`方法可以配置视图解析器,自定义视图解析逻辑,灵活管理视图文件路径和加载方式。 其他方法如`configureContentNegotiation`用于配置内容协商参数,`addCorsMappings`处理跨域访问问题,`configureMessageConverters`配置信息转换器,实现请求和响应的数据格式转换。 实现WebMvcConfigurer接口或继承WebMvcConfigurationSupport类,可以灵活定制Spring MVC框架的行为,简化配置,提高应用的可维护性和扩展性。WebMvcConfigurer详解
WebMvcConfigureræ¥å£å¸¸ç¨çæ¹æ³ï¼
addInterceptorï¼éè¦ä¸ä¸ªå®ç°HandlerInterceptoræ¥å£çæ¦æªå¨å®ä¾
addPathPatternsï¼ç¨äºè®¾ç½®æ¦æªå¨çè¿æ»¤è·¯å¾è§åï¼addPathPatterns("/**")对ææ请æ±é½æ¦æª
excludePathPatternsï¼ç¨äºè®¾ç½®ä¸éè¦æ¦æªçè¿æ»¤è§å
æ¦æªå¨ä¸»è¦ç¨éï¼è¿è¡ç¨æ·ç»å½ç¶æçæ¦æªï¼æ¥å¿çæ¦æªçã
以ååSpringMVCçæ¶åï¼å¦æéè¦è®¿é®ä¸ä¸ªé¡µé¢ï¼å¿ é¡»è¦åControllerç±»ï¼ç¶åååä¸ä¸ªæ¹æ³è·³è½¬å°é¡µé¢ï¼æè§å¥½éº»ç¦ï¼å ¶å®éåWebMvcConfigurerä¸çaddViewControllersæ¹æ³å³å¯è¾¾å°ææäº
æ¯å¦ï¼æ们æ³èªå®ä¹éæèµæºæ å°ç®å½çè¯ï¼åªééåaddResourceHandlersæ¹æ³å³å¯ã
addResoureHandlerï¼æçæ¯å¯¹å¤æ´é²ç访é®è·¯å¾
addResourceLocationsï¼æçæ¯å é¨æ件æ¾ç½®çç®å½
è¿ä¸ªæ¹æ³æ¯ç¨æ¥é ç½®è§å¾è§£æå¨çï¼è¯¥æ¹æ³çåæ°ViewResolverRegistry æ¯ä¸ä¸ªæ³¨åå¨ï¼ç¨æ¥æ³¨åä½ æ³èªå®ä¹çè§å¾è§£æå¨çã
configureMessageConvertersï¼ä¿¡æ¯è½¬æ¢å¨
WebMvcConfigurationSupportåWebMvcConfigurerçåºå«
springboot2.0ä¹åé ç½®æ¦æªå¨extends çWebMvcConfigurerAdapterè¿æ¶ï¼åè代ä¹çæ¯WebMvcConfigurationSupportãWebMvcConfigurerAdapteråªæ¯å¯¹WebMvcCofigurerç空å®ç°,èWebMvcConfigurationSupportçå®ç°çæ¹æ³æ´å ¨é¢
继æ¿WebMvcConfigurationSupportä¼åç°Spring BootçWebMvcèªå¨é 置失æ(WebMvcAutoConfigurationèªå¨åé ç½®)ã
导è´æ æ³è§å¾è§£æå¨æ æ³è§£æ并è¿åå°å¯¹åºçè§å¾ã