春ブーツは、自動組立を達成します

       書き込む前にTLVコーデック Githubの予期せぬ収穫に星の一部なので、単純に少しコメント組立自動組立春ブーツのと春を達成するために、最近のアイドルを利用するライブラリを。春ブーツ自動組立ラインの情報について、次のようにかなりの数の、簡単な手順である、まだあります。

<オプション>が真、すなわち、送信されていない依存設け依存関係の自動組立の1 POM導入、。

    <dependencies>
        ...
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

2.ラベルにXXXAutoConfigurationクラス、および@Configuration印を達成するために、

3.対応する構成属性がある場合は、設定はクラスによって設定@EnableConfigurationPropertiesに組み込まれ、かつ@ConfigurationPropertiesクラスコンフィギュレーションで必要な設定のプレフィックスを設定することができる(IDEAで、プロパティとコメントのデフォルト値はapplication.ymlに入力されます)プロンプトが表示されたら:

@Configuration
@EnableConfigurationProperties(DreamTLVProperties.class)
public class DreamTLVAutoConfiguration {

    private DreamTLVProperties properties;

    public DreamTLVAutoConfiguration(DreamTLVProperties properties) {
        this.properties = properties;
    }

    @ConditionalOnMissingBean
    @Bean
    public TLVContext tlvContext() throws TLVInitException {
        return new TLVContext(properties.getBeanPackages());
    }

    @ConditionalOnMissingBean({TLVCodec.class, IHeaderCodec.class})
    @Bean("tlvCodec")
    public TLVCodec defaultTLVCodec() throws TLVInitException {
        return new TLVCodec(tlvContext());
    }

    @ConditionalOnBean(IHeaderCodec.class)
    @Bean("tlvCodec")
    public RawTLVCodec<?> customTLVCodec(IHeaderCodec<?> headerCodec) throws TLVInitException {
        return new RawTLVCodec<>(tlvContext(), headerCodec);
    }

}
@ConfigurationProperties(prefix = "dream.tlv")
public class DreamTLVProperties {

    /**
     * TLV bean packages for scanning
     */
    private String[] beanPackages;

    /**
     * @return TLV bean packages for scanning
     */
    public String[] getBeanPackages() {
        return beanPackages;
    }

    /**
     * Configure bean packages for TLVContext initialization
     *
     * @param beanPackages TLV bean packages for scanning to set
     */
    public void setBeanPackages(String[] beanPackages) {
        this.beanPackages = beanPackages;
    }
}

対応するクラスの自動設定を(改行を使用して、カンマで区切られたS「\」)リソース/ META_INF spring.factoriesファイルを作成し、設定4:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.dream.codec.tlv.DreamTLVAutoConfiguration

単純な全体的な手順は非常に簡単です。しかし、次のように最初の要約の注目の多くのポイントは、あります。

1.使用中の柔軟性の必要性は、関連するノートを@ConditionalXXX注射するか、または関係のないオブジェクトを選択するために注入しました

この時点で、自動組立の順序を定義することが必要な場合2. @AutoConfigurationBefore又は@AutoConfigurationAfterアセンブリ配列によって調節される必要がある、例えばSpringBootは、非同期スレッドプールを運ぶエグゼキュータを置き換える、直接注射@Bean発見によって、この時間は、エフェクトのTaskExecutorを取りません各サードパーティが自動組立された後、主としてTaskExecutionAutoConfiguration春ブート・自動設定にすると、まず、(最初のスキャンSpringBootApplicationプロジェクトでは、すべてのBeanの実行の正常な秩序を実行した後、春ブート生態関連の自動設定を実行しますクラス)。

@EnableAsync
@AutoConfigureBefore(TaskExecutionAutoConfiguration.class)
@Configuration
@EnableConfigurationProperties(DreamFrameworkProperties.class)
public class DreamFrameworkAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean(name = "taskExecutor")
    public Executor taskExecutor() {
        ...
    }
}

3.これは、より個人的な感情地方の事ですが、自動設定に@ComponentScanラベルを使用しないようにしてください、それでも型注入が@Beanでスキャン、およびサードパーティのライブラリが常に少し過剰に感じたに関するすべての包括的な、@ ComponentScanことができるかを指定する必要があります自動化されました。

4. @ComponentScanを使用せずに、Beanのか、どのように注入の@Controller @Repository特別な機能のように、上記の問題、次のとおりです。実際には、あまりにも複雑にしたくない、または対応するクラスに@Controllerまたは@Repositoryラベルをマークし、そして方法で自動構成で@Beanを注入することができます。

      個人的にも実装ドリーム・春のフレームワークを、いくつかのデフォルトの作業を行うための自動組立自動化フレームワークがたくさんあります。自動組立の一定程度を達成するために、伝統的な春のコメント@importの方法に比べて、春ブーツ自動設定より簡単かつ便利に実装します。(約@importはまた私を参照することができTLVコーデック TLV-春のプロジェクトの実現)

公開された42元の記事 ウォンの賞賛9 ビュー60000 +

おすすめ

転載: blog.csdn.net/jjxojm/article/details/104399918