[SpringBoot] 独自のスターターを最初からカプセル化し、他のプロジェクトに導入して使用します

独自のスターターを最初からカプセル化し、他のプロジェクトに導入して使用します

序章

この記事では、独自のスターターを最初からパッケージ化し、それを他のプロジェクトに導入して使用する方法を紹介します。

スターターを自分でパッケージ化する必要があるのはなぜですか?
このようにして、Spring やその他のサードパーティによって提供されるスターターを再カプセル化したり、必要な一部のコンテンツを他のプロジェクト用にパッケージ化したりして、プロジェクト レベルのコードの再利用性を向上させることができます。

1. 新しい Spring-Boot プロジェクトを作成します

まず、新しい Spring-Boot プロジェクトを作成する必要があります。Maven の依存関係の問題を防ぐため、ここでは Spring が提供するコンポーネントを選択しません。追加する場合は、参照されるプロジェクトにこのコンポーネントがないことを確認してくださいMaven ソースを変更することも忘れないでください

ここに画像の説明を挿入

2. META-INF/spring.factories を作成する

testフォルダーを削除し、メインディレクトリにresources/META-INF/spring.factoriesファイルを作成します。
ここに画像の説明を挿入

メインプログラムも削除します。スターターを起動する必要はありません。

ここに画像の説明を挿入

3. テストケース

次に、インターセプターを作成し、すべてのメソッドをインターセプトし、一部のコンテンツを出力して効果を確認します。

まずpomファイル内の乱雑なものを削除し、Webモジュールを導入します

	<dependencies>

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

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

    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

設定ファイル

package com.ez4sterben.mytestspringbootstarter.config;

import com.ez4sterben.mytestspringbootstarter.interceptor.MyTestInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 我的测试web mvc配置
 *
 * @author ez4sterben
 * @date 2023/07/18
 */
@Configuration
public class MyTestWebMvcConfig implements WebMvcConfigurer {
    
    

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    
    
        registry.addInterceptor(new MyTestInterceptor())
                .addPathPatterns("/**");
    }
}

インターセプタファイル

package com.ez4sterben.mytestspringbootstarter.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 我的测试拦截器
 *
 * @author ez4sterben
 * @date 2023/07/18
 */
@Component
public class MyTestInterceptor implements HandlerInterceptor {
    
    

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    
    
        System.out.println("--------------------starter中的拦截器生效了!------------------------");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    
    

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    
    

    }
}

次のコンテンツを spring.factories ファイルに追加して自動構成を有効にします

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.ez4sterben.mytestspringbootstarter.config.MyTestWebMvcConfig

現在のプロジェクト構成は以下の通りです

ここに画像の説明を挿入

4. パッケージスターター

アイデアの右側で Maven を開き、ライフサイクルで [インストールとパッケージ化] をクリックします。
ここに画像の説明を挿入

5. スターターを使用する

ローカルの Maven リポジトリを開きます

ここに画像の説明を挿入

私たちのスターターはすでに jar パッケージの形式になっているので、他のプロジェクトを開いてこのスターターを参照します。

        <dependency>
            <groupId>com.ez4sterben</groupId>
            <artifactId>mytest-spring-boot-starter</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

次に、Maven スタートアップ プロジェクトを更新し、テストするインターフェイスを見つけるだけです。
ここに画像の説明を挿入

ここに画像の説明を挿入
テスト成功!

6. まとめ

この記事では比較的基本的なケースを取り上げます。独自のスターターをカプセル化するためにこの方法を試すことができます。また、Web モジュールはスターターに導入されているため、スターターを導入するプロジェクトに導入する必要はありません。この方法により、一般的な戻り値、基本的な定数、基本的な列挙型クラス、および一部の統合認証と統合例外インターセプトなど、多くのプロジェクトで固定されている基本的な内容をカプセル化できますこれらのコンテンツは一度設定すれば、さまざまなプロジェクトで使用できます。

おすすめ

転載: blog.csdn.net/qq_51383106/article/details/131787861