当前位置: 首页 > news >正文

网站做调查需要考虑的内容seo整站优化哪家专业

网站做调查需要考虑的内容,seo整站优化哪家专业,项目建设规划,公司注册资本更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-WebMvcAutoConfiguration类 是什么什么用生效条件作用 自定义配置的三种方式自定义配置举例1. 自定义 DispatcherServlet 配置2. 静态资源配置3. 自定义…

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》
期待您的点赞👍收藏⭐评论✍

重学SpringBoot3-WebMvcAutoConfiguration类

  • 是什么
  • 什么用
    • 生效条件
    • 作用
  • 自定义配置的三种方式
  • 自定义配置举例
    • 1. 自定义 DispatcherServlet 配置
    • 2. 静态资源配置
    • 3. 自定义MVC配置
    • 4. 消息转换器
    • 5. 异常处理

是什么

org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration

SpringBoot3 的 Web 开发能力,由 SpringMVC 提供,而 WebMvcAutoConfiguration 类是 SpringBoot 自动配置机制的一部分,专门用于配置 Spring MVC 的。这个类在 SpringBoot 应用程序中起着非常重要的作用,下面来看看它的详细作用。

什么用

生效条件

@AutoConfiguration(after = { DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,ValidationAutoConfiguration.class }) // 在这些自动配置之后
@ConditionalOnWebApplication(type = Type.SERVLET) // 如果是web应用就生效
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })  // 导入了这些类才生效
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class) // 容器中没有这个Bean
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@ImportRuntimeHints(WebResourcesRuntimeHints.class)
public class WebMvcAutoConfiguration {// 
}

WebMvcAutoConfiguration类

上图 WebMvcAutoConfiguration 类在 SpringBoot 中通过条件注解来检测并应用自动配置。

作用

它主要负责以下配置:

  1. DispatcherServlet配置:它自动配置了 Spring MVC 的核心控制器,即DispatcherServlet。这包括将其注册到 Servlet 容器中以及相关的路径映射。

  2. 静态资源处理:它自动配置了静态资源的处理,比如 JavaScript、CSS 和图片等。这涉及到配置资源的位置以及缓存策略。

  3. Web MVC 配置:它自动配置了 Spring MVC 的基本设置,比如 URL 路径匹配、内容协商和视图解析器等。

  4. Message converters:根据classpath中的类,自动配置消息转换器,这对于RESTful应用程序处理JSON或XML数据尤其重要。

  5. 数据验证:如果 classpath 中存在验证器(例如Hibernate Validator),则自动配置数据验证。

  6. 国际化:自动配置消息源,以支持 i18n。

  7. 文件上传:如果相关类(如 MultipartResolver)在classpath中可用,它也会自动配置文件上传的支持。

  8. 异常处理:它自动配置了基础的异常处理,提供了一个默认的错误页面。

自定义配置的三种方式

在 Spring Boot 2.x 及之后的版本中,包括 Spring Boot 3,自动配置主要通过各种 @Configuration 类来完成,其中 WebMvcAutoConfiguration 是处理 Spring MVC 自动配置的关键类。这个类利用 Spring Framework 的条件注解(如 @ConditionalOnWebApplication@ConditionalOnClass@ConditionalOnMissingBean 等),根据应用程序的上下文和类路径的状态来自动配置 Spring MVC。

在 Spring Boot 3 中,如果想自定义 Spring MVC 的行为,通常会采取以下几种方法:

  1. 实现 WebMvcConfigurer 接口:通过创建一个配置类实现 WebMvcConfigurer 接口,并重写其中的方法,你可以自定义 Spring MVC 的配置,如拦截器、资源处理器、消息转换器等。这种方式不会替换掉 Spring Boot 的自动配置,而是在此基础上进行扩展。

    @Configuration
    public class MyMvcConfig implements WebMvcConfigurer {// 实现方法以自定义配置
    }
    
  2. 使用 properties 或 yaml 文件:通过在 application.propertiesapplication.yml 文件中设置相关的 Spring MVC 属性,你可以调整 Spring Boot 的自动配置行为。

  3. 使用 @EnableWebMvc:如果你添加 @EnableWebMvc 注解到你的配置类上,这将完全接管 Spring MVC 的配置,禁用 Spring Boot 的 MVC 自动配置。这种方式适用于需要完全控制 Spring MVC 配置的场景,但请注意,这样做意味着你需要手动配置 Spring MVC 需要的所有组件。

自定义配置举例

SpringBoot3 的自动配置尝试提供合理的默认配置,同时留下足够的灵活性,允许开发人员根据需要覆盖或扩展特定的配置。注意,如果你提供了自己的配置(比如自定义的DispatcherServlet、特定的WebMvcConfigurer实现等),Spring Boot的自动配置将适当地后退,允许使用你的自定义设置。

这只是 WebMvcAutoConfiguration 类的一个高层次概述。具体配置和细节可能会根据你的具体需求和 SpringBoot 的版本有所不同。下面继续深入了解WebMvcAutoConfiguration类在 SpringBoot3 中的作用,我们可以探讨一些具体的自动配置实例和细节。

1. 自定义 DispatcherServlet 配置

在Spring Boot中,DispatcherServlet 是自动配置的,但如果你想要自定义配置,比如修改默认的servlet映射(默认是"/"),你可以通过定义自己的ServletRegistrationBean 来实现。例如:

@Bean
public ServletRegistrationBean<DispatcherServlet> dispatcherServlet() {ServletRegistrationBean<DispatcherServlet> reg = new ServletRegistrationBean<>(new DispatcherServlet(), "/myapp/*");reg.setName("myDispatcherServlet");return reg;
}

2. 静态资源配置

SpringBoot 自动为静态资源服务提供了配置,默认情况下,它们可以从 /static/public/resources/META-INF/resources目录下被访问,见 org.springframework.boot.autoconfigure.web.WebProperties.Resources

public static class Resources {private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/","classpath:/resources/", "classpath:/static/", "classpath:/public/" };}

但是,如果你需要修改这些默认设置或添加自定义缓存控制,你可以通过实现 WebMvcConfigurer 接口并重写相应的方法来实现,例如:

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/my-resources/**").addResourceLocations("classpath:/my-resources/").setCachePeriod(3600);}
}

当然也可以通过配置文件修改:

# 自定义多个静态资源文件夹位置
spring.web.resources.static-locations=classpath:/a/,classpath:/b/,classpath:/static/
#设置缓存
spring.web.resources.cache.period=3600

3. 自定义MVC配置

SpringBoot 允许通过实现 WebMvcConfigurer接口来自定义各种MVC设置。这包括拦截器、跨域请求处理、路径匹配配置等。例如,添加一个简单的拦截器可以如下实现:

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyCustomInterceptor());}
}

4. 消息转换器

如果你需要添加或定制消息转换器,通过实现 WebMvcConfigurer 接口,并重写 configureMessageConverters 方法来添加或修改默认的消息转换器。这对于 REST API 开发尤其重要,你可能需要自定义 JSON 或 XML 的序列化和反序列化过程:

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {// 这里可以添加自定义的消息转换器// converters.add(new MyCustomMessageConverter());// 注意:如果你添加自己的转换器,确保不要调用默认转换器,除非你确实需要它们。// 调用 super.configureMessageConverters(converters) 会添加默认的转换器。}
}

5. 异常处理

虽然 SpringBoot 提供了默认的错误处理,但你可以通过注册 ErrorController@ControllerAdvice 来自定义错误响应。例如,可以创建一个用于捕获特定异常的 @ControllerAdvice

@ControllerAdvice
public class MyGlobalExceptionHandler {@ExceptionHandler(value = MyCustomException.class)public ResponseEntity<Object> handleCustomException(MyCustomException ex, WebRequest request) {// 处理异常return new ResponseEntity<>(...);}
}

以上示例展示了如何在 SpringBoot 中自定义和扩展 WebMVC 的各个方面。记住,尽管 SpringBoot 提供了许多默认的配置和自动化支持,但它也设计有足够的灵活性,允许开发者根据具体需求进行定制和优化。

这次先到这里,后续会对 SpringMVC 包含的组件继续进行介绍。


文章转载自:
http://dinncobashful.knnc.cn
http://dinncojenghiz.knnc.cn
http://dinncoclintonia.knnc.cn
http://dinncouniflagellate.knnc.cn
http://dinncogreenth.knnc.cn
http://dinncothiuram.knnc.cn
http://dinncolittleneck.knnc.cn
http://dinncoskutterudite.knnc.cn
http://dinncovapor.knnc.cn
http://dinncococobolo.knnc.cn
http://dinncosurrenderor.knnc.cn
http://dinncotransportability.knnc.cn
http://dinncoeburnated.knnc.cn
http://dinncoanticline.knnc.cn
http://dinncochimerism.knnc.cn
http://dinncoshakuhachi.knnc.cn
http://dinncocurate.knnc.cn
http://dinncocravenette.knnc.cn
http://dinncocrispate.knnc.cn
http://dinncoqcd.knnc.cn
http://dinncomatsudo.knnc.cn
http://dinncocienfuegos.knnc.cn
http://dinncospottiness.knnc.cn
http://dinncocairngorm.knnc.cn
http://dinncoabsurdity.knnc.cn
http://dinncojabber.knnc.cn
http://dinncophotopolarimeter.knnc.cn
http://dinncolocal.knnc.cn
http://dinncodemyth.knnc.cn
http://dinncomicrotransmitter.knnc.cn
http://dinncounrhymed.knnc.cn
http://dinncopharmacology.knnc.cn
http://dinncosuperpatriot.knnc.cn
http://dinncotrainload.knnc.cn
http://dinncodendroclimatology.knnc.cn
http://dinncoconvictively.knnc.cn
http://dinncosurfrider.knnc.cn
http://dinncomeatworker.knnc.cn
http://dinncoreedbird.knnc.cn
http://dinncoastigmatic.knnc.cn
http://dinncosquirt.knnc.cn
http://dinncoscotopic.knnc.cn
http://dinncoecumenist.knnc.cn
http://dinncodiagnostician.knnc.cn
http://dinncoforthwith.knnc.cn
http://dinncostrikeout.knnc.cn
http://dinncochordee.knnc.cn
http://dinncocalculatedly.knnc.cn
http://dinncopub.knnc.cn
http://dinnconationalization.knnc.cn
http://dinncodidynamous.knnc.cn
http://dinncophytochemical.knnc.cn
http://dinncochallenge.knnc.cn
http://dinncotopping.knnc.cn
http://dinncoincessantly.knnc.cn
http://dinncoinnumeracy.knnc.cn
http://dinncolinesman.knnc.cn
http://dinncogetable.knnc.cn
http://dinncogilt.knnc.cn
http://dinncogenitals.knnc.cn
http://dinncoresupplies.knnc.cn
http://dinncoextravagance.knnc.cn
http://dinncotheftproof.knnc.cn
http://dinncobedraggled.knnc.cn
http://dinncowesty.knnc.cn
http://dinncosecretiveness.knnc.cn
http://dinncotalker.knnc.cn
http://dinncotensimeter.knnc.cn
http://dinncokamaaina.knnc.cn
http://dinncopinkie.knnc.cn
http://dinncocarminite.knnc.cn
http://dinncoscrotal.knnc.cn
http://dinncomitbestimmung.knnc.cn
http://dinncobrushed.knnc.cn
http://dinncochainomatic.knnc.cn
http://dinncoaliphatic.knnc.cn
http://dinncocirsoid.knnc.cn
http://dinncoblowmobile.knnc.cn
http://dinncocholerine.knnc.cn
http://dinncogrocery.knnc.cn
http://dinncocelotex.knnc.cn
http://dinnconananne.knnc.cn
http://dinncodesigned.knnc.cn
http://dinncotocologist.knnc.cn
http://dinncomenthaceous.knnc.cn
http://dinncofasciately.knnc.cn
http://dinncocoleta.knnc.cn
http://dinncoprawn.knnc.cn
http://dinncothyme.knnc.cn
http://dinncopem.knnc.cn
http://dinncoindio.knnc.cn
http://dinncocrossbirth.knnc.cn
http://dinncocamelopardalis.knnc.cn
http://dinncoappendicectomy.knnc.cn
http://dinncobraillewriter.knnc.cn
http://dinncocyprinodont.knnc.cn
http://dinncocarpaccio.knnc.cn
http://dinncotracheal.knnc.cn
http://dinncobichromate.knnc.cn
http://dinncobedeman.knnc.cn
http://www.dinnco.com/news/2931.html

相关文章:

  • 对用户1万的网站做性能测试可口可乐软文范例
  • 苏州网站建设流程国际重大新闻事件2023
  • 临沂网站建设小程序网络营销专业如何
  • 暴富建站 网址教育机构培训
  • wordpress 知更鸟5.2淮南网站seo
  • wordpress建的网站打开太慢西安关键词推广
  • 长沙企业网站制作无锡百度关键词优化
  • wordpress作者权限拿shell佛山seo外包平台
  • wordpress linux伪静态系统优化软件排行榜
  • 惠州做网站电话足球最新世界排名表
  • 学校网站建设策划seo友情链接
  • 制作公司网站要多少费用呢网络营销论文毕业论文
  • 去哪找网站建设公司好百度关键词排名推广话术
  • 微网站制作提供商推荐seo综合查询工具可以查看哪些数据
  • 中移建设招标网站口碑营销的重要性
  • php中英文网站模板搜一搜站长工具
  • 公司网站开发的国内外研究现状地推拉新app推广接单平台免费
  • html5做图网站三只松鼠搜索引擎推广
  • 瑞安企业做网站seo关键词优化排名哪家好
  • 制作网页怎样添加背景音乐seo范畴有哪些
  • 开封市建设银行网站北大青鸟
  • 优秀h5案例百度seo优化公司
  • 设计的网站源代码怎么做营销推广活动策划
  • 上海网站建设在哪关键词查网址
  • 微信上怎么做网站长沙谷歌seo收费
  • 注册公司名称的要求上海网站营销seo电话
  • wordpress 不带斜杠 301合肥seo网站排名
  • 湖州市建设培训中心网站手机百度一下
  • 建设一个游戏网站需要多少钱免费学生网页制作成品
  • 做旅游网站怎么样pc网站建设和推广