当前位置: 首页 > 网络应用技术

春季MVC评论@EnableWebMVC

时间:2023-03-09 12:52:09 网络应用技术

  实际上,我已经接触到Java Web,以相对较晚。这句话的含义是,当我进行开发时,我会使用更多的新技术。例如,它也是基于春季启动的封装。

  当然,这是好是坏。优势是跟上时代的趋势。缺点是包装集还不够深。

  今天,当某些框架包装的源代码时,我看到某些Web项目的配置类继承了WebMVCCONFIGURARADAPTER类,然后自定义了一些配置。此外,此类中有此注释:@enablewebmvc。

  然后有两个问题:

  1.想自定义Spring MVC的配置

  2. @enablewebmvc

  有了这两个问题,准备找出答案

  首先,Spring MVC具有多个核心组件,并且这些组件的配置是可扩展的。这些核心组件不是本文的重点,也不强调。如果您需要了解,则可以检查相关信息。

  我已经阅读了“查看春季MVC源代码分析和练习”的作者:Han Lu Biao。本书解释了春季MVC的九个主要组成部分。如果您有兴趣,可以看到它。

  那么问题是,如果要自定义这些配置,为什么要继承WebMVCCONFIGURARADAPTER类。查看其中一些类后,不必继承此类,但是如果您想自定义一些高级配置,则建议使用它继承它。什么是高水平?嘿。

  首先介绍此类,此类实现了WebMvcconFigurer接口的所有方法(全部为空实现)。这是WebMvcconFigurer接口。

  定义回调方法,通过{@code @enablewebmvc}自定义Spring MVC的配置。{ @code @enablewebmvc}已注释的注释可以实现此界面的回调,并有机会自定义默认配置。Extension {@link WebMvConfigurerAdapter},它提供了所有接口方法的根实现。

  我认为,这些笔记具有以下含义:

  换句话说,当您想启用Spring MVC时,可以使用注释@enableWebMVC启用Spring MVC配置。另外,如果要自定义这些配置,则可以使用弹簧容器的配置来继承WebMvcconfiguradapter类并重写它。需要自定义的那些方法。

  在这一点上,我还有一些问题:

  Q1。我继承了WebMvcconfiguradapter类,并重写了需要自定义的方法,但是Spring MVC如何知道

  Q2。Spring MVC如何知道我要自定义哪种配置

  Q3。此自定义配置的子类如何与Spring MVC关联

  这些问题的答案应在此处在 @enablewebmvc中评论。

  @enablewebmvc的用途是什么?首先查看源代码中第一行的注释:

  将此注释添加到{@code @configuration}类可以从{@link webmvconfigurationsupport}导入到Spring MVC Configuration中

  换句话说,应使用@configuration注释添加此注释(这意味着此类应为Spring容器的支持类),然后您可以从{@link webmvConfigurationsupport}中介绍Spring MVC配置。.webmvconfigurationsupport类。

  查看@enableWebMVC注释类的源代码:

  关键是:@import(delegatingwebmvcconfiguration.class),它是基于Java配置格式的配置类的介绍,然后查看delegatingweegatingwebmvconfiguration的源代码:

  然后理解:授权WebmvConfiguration是继承WebMvConfigurationSupport的配置类。

  现在,让我们看一下什么是WebMvcconFigurationSupport。注释是这样解释的:

  这是MVC Java Configuration的配置背后的主要类。通常通过将{@link enablewebmvc @enablewebmvc}添加到应用程序{@link configuration @configuration}类而导入。

  高级选项的另一种选择是直接从此扩展并根据需要介绍它。请记住,将{@link configuration @configuration}添加到子类别,{@link bean @bean}覆盖{@link bean} method.sethod.sod.s.有关更多详细信息,请参见Javadoc,{@link Enablewebmvc @enablewebmvc}。

  此WebMvcconFigurationSupport类的角色实际上提供了上面提到的Spring MVC的几个核心组件的能力。如果您想从此扩展,您只需要继承和重写其某些方法(如果您有兴趣,则可以看到源该课程的代码)。

  现在,删除WebmvConfiguration类已继承WebMvcconfigunupport类并重写了一些方法,并且授权weegatingwebmvConfiguration类是Spring Container custer的配置类。

  这是@enableWebMVC注释的角色:

  1. Spring MVC的这些核心组件提供的功能(即启用Spring MVC)

  MVC和此类的每个组件的每个组件也已注册到弹簧容器。

  那么,@EnableWebMVC注释与自定义配置之间的关系在哪里?

  2.支持自定义弹簧MVC配置的能力

  其能力的关键是DeLegrationWebMvConfiguration配置类。授权WebmvConfiguration类是从WebMvcconfigunuppport类继承的,并重写了一些方法,这使我们能够增加自定义配置。

  查看授权WebmvConfiguration类的一些源代码,并做出解释:

  不需要太多,只需了解以上行即可。

  关键是授权webmvConfiguration ::的属性

  请注意我上面发布的一些中文注释,这表明委托书weegationwebmvconfiguration类将使所有实现接口webmvcconfigurer的类别(子类,这是Java语法,所以不要说),包括我们托管的自定义配置类(因为也实现),将添加这些配置。

  这也是第1节中提到的Q1和Q3的问题:我的配置类在弹簧容器中注册,Spring将所有WebMvcconFigurer的实现类注射到所有webmvcconfigurer接口的配置类中类配置这些配置。然后回电,然后回电,该类实现了WebMvcconFigurer接口,最后添加我们的自定义配置。

  当前的问题是第二个。如果配置是自定义的,它会加载默认配置吗?这取决于自定义的配置,例如httpmessageconverter。如果该方法是重写方法配置编辑器以自定义配置,则不会加载默认配置。如果重写方法是ExtendMessageContertes,它将加载自定义和默认值。以下源代码:

  其他几个组件,有兴趣检查相关信息或键入源代码以了解。