Spring Bootの自動構成関数は、どのスプリング構成を使用するか、どちらが異なる状況に従って使用しないかを決定できることを知っています。例えば:
これはどのように達成されましたか?その理由は、Springの条件付き構成を利用しているため、アプリケーションに構成が存在する可能性がありますが、特定の特定の条件が満たされる前にこれらの構成は無視されます。
条件付き構成を実装するには、 @Conditional Conditional Annotationを使用する必要があります。次に、 @Conditionalがどのように機能するかを体験するために、小さな例を書きましょう。
1。 @条件の小さな例
Windowsにリストを表示するコマンドはdirであり、Linuxシステムにリストを表示するコマンドはLSであることがわかります。条件付き構成に基づいて、異なるオペレーティングシステムで異なる値を達成できます。
1。判断条件の定義
1.)Windowsの下の決定条件
/** * Springの状態インターフェイスを実装し、Matches()メソッドをオーバーライドし、オペレーティングシステムがWindowsの場合はtrueを返します * */パブリッククラスWindowsコンディションは条件{@Overrideパブリックブールマッチ(AntsionContext Context、AnnotatedTypemetadata Metadata){return Context.getEnvironment()。 }}2.)Linuxに基づく決定条件
/** * Springの状態インターフェイスを実装し、Matches()メソッドをオーバーライドし、オペレーティングシステムがLinux * */public Class LinuxConditionが条件を実装する場合にtrueを返します。 }}
2。異なるシステムの下でのBeanクラス
1.)インターフェイス
public interface listservice {public string showlistline();}2.)Windowsの下のBeanクラス
パブリッククラスWindowsListServiceはlistservice {@override public string showlistline(){return "dir"; }}3.)Linuxの下のBeanクラス
パブリッククラスlinuxListserviceはlistservice {@override public string showlistline(){return "ls"; }}3。構成クラス
@configurationPublic Class ConsityConfig { / *** @Conditional Annotationを渡し、Windows条件を満たしている場合はWindowsListServiceインスタンスを返します。 } / *** @conditional annotationを渡し、Linux条件を満たしている場合はLinuxListServiceインスタンスを返します。 }}4.テストクラス
public class conditionTest {public static void main(string [] args){annotationConfigApplicationContext = new AnnotationConfigApplicationContext(conditionConfig.class); ListService listservice = context.getBean(listservice.class); system.out .println(context.getEnvironment()。getProperty( "os.name") + "システムの下のリストコマンドは次のとおりです。 }}5。Windows7システムにいるので、テストクラスを実行すると、結果は
Windows 7システムの下のリストコマンドは次のとおりです
あなたがLinuxを使用している場合、結果はそうなります
Linuxシステムに基づくリストコマンドは次のとおりです
2。スプリングブートの条件付き構成
Spring Boot Projectには、Spring-Boot-AutoconFigureというJARパッケージがあります
条件付き構成は、この瓶に実装されています。 @Conditionalで始まる次の条件付き注釈を使用します。
次に、ソースコード列を見てみましょう。
jdbctemplateautoconfigurationを例として、このコードが含まれています。
@bean @primary @conditionalonmissingbean(jdbcoperations.class)public jdbctemplate jdbctemplate(){return new jdbctemplate(this.datasource); }JDBCTEMPLATE BEANは、JDBCoperationがない場合にのみ初期化されます(JDBCTEMPLATEのソースコードを見ると、JDBCTEMPLATEクラスがJDBCoperationsインターフェイスを実装することがわかります)。
上記のコンテンツに基づいて、自動構成に関連するソースコードを読み取ることができます。
要約します
上記は、編集者が紹介したスプリングブーツの@ConditionalおよびSpring Bootの自動構成です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!