2017-11-09 12 views
-1

私はSpring Boot埋め込みのTomcatを使用しています。
私のアプリケーションでは、3つの構成クラスがあり、クラスのロード順序を制御するために@Order注釈を使用しました。埋め込みTomcatでアプリケーションを実行すると問題なく動作しますが、スタンドアロンのTomcat(WAR)では正しい順序でロードされません。
私のクラスには、以下のようなものです:Spring @Order注釈が正しい順序で読み込まれない

@Order(1) public Class WebConfig 
@Order(2) public Class SwaggerConfig 
@Order(3) public Class PlanoutConfig 

答えて

3

@Orderは、注釈付きのコンポーネントのためではなく、設定クラスのソート順を定義します。
埋め込みTomcatモードでは、副作用があるとします。

あなたのクラスが設定クラスであれば、それは、@Configurationと注釈を付けたクラス 、あなたが@AutoconfigureOrder@Order上を優先すべきである spring boot documentationの状態です。

44.1理解自動設定豆

あなたは、あなたも @AutoconfigureOrderを使用することができ、互いの 任意の直接的な知識を持つべきではない、特定の自動構成を注文したい場合は。そのアノテーションは、 の標準@Order注釈と同じ意味を持ちますが、 自動設定クラスの専用の注文を提供します。春Frameworkの注文 注釈の


AutoConfigureOrder

public @interface AutoConfigureOrder 

自動設定固有の変種。 の間で自動構成クラスの順序を変更することなく、 をAnnotationConfigApplicationContext.register(Class ...)に渡す構成クラスの順序に影響することなく許可します。

あなたはそう書くことができます:

@AutoConfigureOrder(0) public Class WebConfig {...} 
@AutoConfigureOrder(1) public Class SwaggerConfig {...} 
@AutoConfigureOrder(2) public Class PlanoutConfig {...} 
関連する問題