spring bootの自動組立及びカスタム組立

2131 ワード

spring bootの自動組立を知るには、まずスプリングフレームワークの手動組立を知る.
スプリングフレームワーク手動組立
スプリングモード注解組立
  • 定義:生命がアプリケーションで「コンポーネント」の役割を演じるための注釈.例えば、@controller、@service、@Componentなどの
  • 組立:または@ComponentScan;前者はspring 2.5で提案された案で、後者はspring 3.1の案です.
  • Spring@Enbaleモジュール組立
    モジュール組立とは:Spring Framwark 3.1サポートを開始する「@Enbaleモジュール駆動」である.「モジュール」とは、同じ分野の機能セットを備え、独立したユニットを形成することを意味する.例えば、Web MVCモジュール、AspecJエージェントモジュール、Caching(キャッシュ)モジュール、JMX(Java管理拡張)モジュール、Aync(非同期処理)モジュールなどです.例えば、@EnbaleWebMvcはWebMVCモジュール@EnbaleTransactionagementを有効にして、事務管理モジュールを有効にします.
    実装
  • 注釈方式
  • @Retention( RetentionPolicy. RUNTIME)
    @Target(ElementType. TYPE)
    @Documented
    @Import (DelegatingWebMvcConfiguration. class)
    public @interface EnableWebMvc {
        ....
    }
    
    
    @Configuration
    public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {
        ....
    }
  • プログラミングインターフェースの方式は、カスタム注釈
  • を実現する.
    /**
     *     HelloWorld   
     *
     */
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    @Documented
    @Import(HelloWorldImportSelector.class)
    public @interface EnableHelloWorld {
    }
    
    設定クラスを実現
    /**
     * HelloWorld   
     *
     */
    public class HelloWorldConfiguration {
    
        @Bean
        public String helloWorld() { //      Bean   
            return "Hello,World 2019";
        }
    
    }
    
    selectorを定義して、import org.springframe ebook.com ntxt.annotations.Import Selectorインターフェースを実現します.
    public class HelloWorldImportSelector implements ImportSelector {
        @Override
        public String[] selectImports(AnnotationMetadata importingClassMetadata) {
            return new String[]{HelloWorldConfiguration.class.getName()};
        }
    }
    
    その後、spring bootの起動クラスに@EnbaleHello Worldを加えて、return「Hello,World 2019」にブレークポイントdebugを打ち込んで起動すれば効果が見られます.直接にこの@Importを自動注釈に加えることもできます.このselectorではなく配置類を導入しても、同じように実現できます.でも、なぜ1周しますか?主に1階のこのselectorがselectでフロー制御をしてくれるからです.
    自動組立を実現するには、resourceの下にMETA-INFフォルダを新規作成し、それから加入する必要があります.
    # /    ,                    ,        
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=/
    com.HelloWorldAutoConfiguration,TestConfiguration