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を有効にして、事務管理モジュールを有効にします.
実装注釈方式 プログラミングインターフェースの方式は、カスタム注釈 を実現する.
自動組立を実現するには、resourceの下にMETA-INFフォルダを新規作成し、それから加入する必要があります.
スプリングフレームワーク手動組立
スプリングモード注解組立
モジュール組立とは: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