2016-09-27 12 views
3

私はPythonの開発者であり、Springブートとgradleの全く新しいものです。しかし、私はjavaでうまくいき、Kotlinでベストを尽くしています。私はlocalhost上でSpring Bootアプリケーション(Kotlin)を実行しようとしていました。 Gradleのビルドは、これらのラインを除いて正常に動作している@Configuration @AutoConfigureAfter with Kotlinの説明

@Configuration 
@AutoConfigureAfter(DispatcherServletAutoConfiguration::class) 
open class Assembly : WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter() 
{ 
    . 
    . 

パラメータResourcePropertiesの、mvcProperties、たBeanFactoryのために渡された値がありません....

私はWebMvcAutoConfigurationAdapterコンストラクタはこれらのparamsを期待していますが、彼らはすべきではないことを理解し注釈@Configuration@AutoConfigureAfterを自動的に通過します。

私は春のブートに全く慣れていないので、何がうまくいかず、どこで起こっているのか分かりません。このコードはすでに本番環境で動作しているので、私はローカル設定やグラブルのconfやその他のものがないかどうか混乱しています。

答えて

2

WebMvcAutoConfigurationAdapterは、アプリケーションコードで直接使用することはできません。代わりにWebMvcConfigurerAdapterを拡張する必要があります。

あなたはSpring Boot 1.4にアップグレードしたと思われます。このリリースでは、WebMvcAutoConfigurationAdapterが、フィールド注入を使用してからコンストラクタ注入に変更されました。これは、サブクラスが必要な引数を渡してスーパーコンストラクタを呼び出す必要があることを意味します。

@AutoConfigureAfterは、自動構成クラスの順序を制御し、依存性注入には影響しません。また、自動構成クラスにのみ影響しますので、Assemblyクラスでは何もしません。

@Configurationは依存性注入にも影響しません。構成クラスは、@Autowiredで注釈が付けられたフィールドまたはそのコンストラクターに依存関係を注入できます。以前は、そのコンストラクタに@Autowiredという注釈を付ける必要がありましたが、as of Spring Framework 4.3 (Spring Boot 1.4)というアノテーションを付ける必要がありましたが、そのクラスにコンストラクタが1つしかない場合は注釈は不要です。

+0

アイデアを得ました。ありがとう。特別に、sb 1.4の ''フィールド注入からコンストラクタ注入へ ''を言及しています。 – runitfirst