独自のスターターを最初からカプセル化し、他のプロジェクトに導入して使用します
序章
この記事では、独自のスターターを最初からパッケージ化し、それを他のプロジェクトに導入して使用する方法を紹介します。
スターターを自分でパッケージ化する必要があるのはなぜですか?
このようにして、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 モジュールはスターターに導入されているため、スターターを導入するプロジェクトに導入する必要はありません。この方法により、一般的な戻り値、基本的な定数、基本的な列挙型クラス、および一部の統合認証と統合例外インターセプトなど、多くのプロジェクトで固定されている基本的な内容をカプセル化できます。これらのコンテンツは一度設定すれば、さまざまなプロジェクトで使用できます。