SpringBoot特別研究Part24:カスタムSpringBootスターター(スターター)

I.概要:

春ブーツの力は能力あるシーンを抽出するためのスターターとして
迅速に適切な場面を設定するには、ロードされたランチャー限り

ステップカスタムスターター(シーン開始剤)である:
1は、最初のシーンを決定するのに必要な依存関係が何であるか
2は、書き込み自動設定を

使用する@Configurationクラスコンフィギュレーションクラスを指定するには、注釈を

使用@ConditionalOnXXX自動的にクラスが指定した条件の場合に有効になります設定する注釈が満たされている
例を:

@ConditionalOnWebApplication(
    type = Type.SERVLET
)

使用@AutoConfigurationAfter順に自動的に設定したクラスを指定する注釈
例:

@AutoConfigureAfter({DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class})

使用する@Beanコンテナにコンポーネントを追加する注釈を

使用し@ConfigurationPropertiesた注釈は、バインドするために、対応するxxxPropertiesクラスコンフィギュレーションバインディング関連する
例:

@ConfigurationProperties(
    prefix = "spring.mvc"
)

使用@EnableConfigurationProperties注釈は力にxxxPropertiesクラスを作成し、コンテナに追加
例:

@EnableConfigurationProperties({WebMvcProperties.class, ResourceProperties.class})

クラスパスにある必要がありますMETA-INFspring.factoriesのファイルは、クラスパスが自動的に設定され、指定
SpringBootが自動的いるの起動クラスをロードするように設定することを知っているので、
例:

# Initializers
org.springframework.context.ApplicationContextInitializer=\
net.zjitc.springboot.listener.HelloApplicationContextInitializer

# Listener
org.springframework.boot.SpringApplicationRunListener=\
net.zjitc.springboot.listener.HelloSpringApplicationRunListener

注意事項:スターターでなければならない空のJARファイルのみ補助提供管理依存他のライブラリーまたは自動組み立てに使用することができ、それらの依存関係を
具体的に記述された自動コンフィギュレーションモジュールイニシエータ自動構成モジュールに依存し
、したがってのみ導入プロモーターこれは、導入された自動コンフィギュレーションモジュールと見なされる
XXX-スターター(開始剤)→XXX-スタータautoconfigurer(自動設定モジュール)であります

命名規則

  • SpringBoot公式名前空間:
    接頭辞:「春・ブート・starter-」
    モード:spring-boot-starter-模块名
    例:春ブート・スターター・ウェブ
  • カスタム名前空間:
    サフィックス:「 -春-ブート・スターター 」
    モード:模块名-spring-boot-starter
    例:MyBatisのスプリング・ブートスターター

第二に、作成したプロジェクト

そのためのアイデアで空のプロジェクトを作成するため、これらの2つの便利を起動して、自動設定モジュールの必要性の
ここに画像を挿入説明
モジュールを追加するにはプラス記号をクリックして
ここに画像を挿入説明
新しいモジュールを選択するために、

そして、MavenプロジェクトとプロジェクトSpringBootを作成

Mavenのプロジェクト:
ここに画像を挿入説明
SpringBootプロジェクト:
ここに画像を挿入説明
スターターSpringBootとしてMavenプロジェクトは、自動設定モジュールとして動作します


第三に、コンフィギュレーション

すべての最初は良いポンポン・コンフィギュレーション・ファイルに依存して1、

スタータープロジェクトのPOMファイルが自動設定モジュールを導入する必要があります。

<!-- 启动器 -->
<dependencies>
	<!-- 引入自动配置模块 -->
	<dependency>
		<groupId>net.zjitc.starter</groupId>
		<artifactId>zjitc-spring-boot-starter-autoconfigurer</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</dependency>
</dependencies>

自動設定モジュールポンポンファイルは、スプリング・ブート・スターターを導入している必要があります:
春ブート・スターターは、すべてのスターターの基本的な構成であるため、導入する必要があります

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
</dependencies>

図2に示すように、ライト自動設定モジュールが続きます。

HelloProperties.java クラス属性
Attributeクラス定義されたパラメータの自動設定がすべて使用されている属性が必要です
クラスで使用することができ@ConfigurationProperties、注釈のプレフィックスを指定した
ので、設定ファイルのパラメータを変更する接頭辞で指定することができます

@ConfigurationProperties(prefix = "zjitc.hello")
public class HelloProperties {

    // 两个属性 用于绑定配置
    private String prefix;
    private String suffix;

    public String getPrefix() {
        return prefix;
    }

    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }

    public String getSuffix() {
        return suffix;
    }

    public void setSuffix(String suffix) {
        this.suffix = suffix;
    }
}

HelloService.java クラスメソッド
実行する方法を提供します。

public class HelloService {

	// 需要创建配置类对象 因为要使用配置类中的参数
    HelloProperties helloProperties;

    public String sayHello(String name)
    {
        // 使用配置类中的参数
        return helloProperties.getPrefix()+name+helloProperties.getSuffix();
    }

    public HelloProperties getHelloProperties() {
        return helloProperties;
    }

    public void setHelloProperties(HelloProperties helloProperties) {
        this.helloProperties = helloProperties;
    }
}

HelloServiceAutoConfiguration.java 自動コンフィギュレーションクラス
利用のように、このクラスは自動的に設定されたクラスが、最初のクラスに構成する必要がありますされて@Configuration注釈が指定する
@ConditionalOnWebApplication注釈を有効にのみ表現するには、Webアプリケーションである
@EnableConfigurationPropertiesノートを有効にすることを可能にするために、指定された属性クラス属性が渡さいますクラスの属性クラス
クラスのメソッドのクラスの設定の初期化

// 自动配置类
@Configuration
// 只有Web应用才会生效
@ConditionalOnWebApplication
// 让属性类中的属性生效
@EnableConfigurationProperties(HelloProperties.class)
public class HelloServiceAutoConfiguration {

    @Autowired
    HelloProperties helloProperties;

    @Bean
    public HelloService helloService()
    {
        HelloService helloService=new HelloService();
        // 设置属性配置文件
        helloService.setHelloProperties(helloProperties);
        return helloService;
    }
}

[設定/METE-INF/spring.factoriesプロファイルには
、構成ファイル内に配置され、自動的に開始ローディングクラスで構成されたパス

# 指定启动时要加载的自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
net.zjitc.starter.HelloServiceAutoConfiguration

最後に、このようなディレクトリ:
ここに画像を挿入説明

インストールMavenのライフサイクルが自動的にモジュールを設定し、スタータがされている入力ウェアハウスに設置
ここに画像を挿入説明
ここに画像を挿入説明
倉庫で、インストール後の座標を導入するために、他のプロジェクトで直接使用することができます


第四に、テスト

そして、テスト用のプロジェクトを作成します:
ここに画像を挿入説明
のみ必要座標スターター導入することができますが:
すべてのスターターは、自動的にすべてのインポートを設定します依存しているため

<!-- 引入自定义的starter -->
<dependency>
	<groupId>net.zjitc.zjitc</groupId>
	<artifactId>zjitc-spring-boot-starter</artifactId>
	<version>1.0-SNAPSHOT</version>
</dependency>

そして、それは簡単な

テストカテゴリ:

@RestController
public class HelloController {

    @Autowired
    HelloService helloService;

    @GetMapping("hello")
    public String hello()
    {
        return helloService.sayHello("Piconjo");
    }
}

ここに画像を挿入説明
導入スターターを説明してきたランチャクラスに導入することができます

テスト・メソッド呼び出しは、これら二つの特性と二つの性質及び無事前に設定初期値を使用する必要があるので
、したがって、属性の試験プロジェクトで設定する必要があります

# 配置前后缀
zjitc.hello.prefix=ZJITC
zjitc.hello.suffix=SOFTWARE1801

テストは成功です
ここに画像を挿入説明


公開された174元の記事 ウォンの賞賛5 ビュー24万+

おすすめ

転載: blog.csdn.net/Piconjo/article/details/105144131