36

リソース ハンドラを追加したいと考えています。彼らが使用するフォーラムでWebMvcConfigurationSupport: http://forum.springsource.org/showthread.php?116068-How-to-configure-lt-mvc-resources-gt-mapping-to-take-precedence-over-RequestMapping&p=384066# post384066

そしてドキュメントは言うWebMvcConfigurerAdapter: http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/config/annotation/EnableWebMvc.html

違いは何ですか?どちらを使用するのですか?どちらもaddResourceHandlers私が必要とする方法を持っています。

これは私の現在のクラスです:

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    public @Override void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources");
    }

    public @Bean TilesViewResolver tilesViewResolver() {
        return new TilesViewResolver();
    }

    public @Bean TilesConfigurer tilesConfigurer() {
        TilesConfigurer ret = new TilesConfigurer();
        ret.setDefinitions(new String[] { "classpath:tiles.xml" });
        return ret;
    }
}
4

4 に答える 4

5

私は最近、コンバーターを構成するときにこのまったく同じ問題を解決していましたが、かなり長い投稿になりました。

デフォルトでは、Spring Boot は の実装を使用し、WebMvcConfigurationSupportすべてを見つけて使用するなど、多くの自動魔法を実行WebMvcConfigurerします。Boot によって既に 1 つの実装が提供されており、さらに追加することができます。configureMessageConvertersこれにより、実装に含まれるコンバーターのリストがWebMvcConfigurer以前の構成ツールから既に事前設定されている場合、一見紛らわしい動作が発生します。

これらのタイプ (WebMvcConfigurationSupportおよびWebMvcConfigurer) も非常に似たインターフェースを持っていますが、最初のタイプは他のタイプを実装していません。ポイントは:

サポートクラスは、 configurerを検索し、それらを使用します + 独自に何かを行います。

から拡張するWebMvcConfigurationSupportと、構成を引き継ぐことができますが、WebMvcConfigurer( のようにaddDefaultHttpMessageConverters) にない利用可能なものがいくつかありますが、そこには大量のコードがありますがEnableWebMvcConfigurationDelegatingWebMvcConfigurationそれは起こりません。

拡張するWebMvcConfigurationSupportWebMvcConfigurer(両方を一度に意味があるかどうかはわかりません) の両方に有効な使用法がありますが、サポート クラスを拡張すると、プロセスをさらに引き継ぎ、多くの「独自の」Spring Boot 機能が失われます。

于 2020-05-15T07:57:24.730 に答える
3

ConfigurationSupport クラスを使用する場合は、静的リソースを提供しようとするときにハードワークを麻痺させる準備ができています。これは機能しないためです。

于 2015-09-28T19:36:33.633 に答える