Spring Boot を使用してプロジェクトを迅速に構築: 構成を削減し、開発効率を向上させます

Spring Boot を使用してプロジェクトを迅速に構築: 構成を削減し、開発効率を向上させます

1. Spring Boot の概要

Spring Boot は Spring Framework に基づくサブプロジェクトであり、Spring アプリケーションの初期化プロセス、開発プロセス、デプロイメントプロセスを簡素化し、高速かつ機敏な開発環境を提供することを目的としています。Spring Boot は、次の 3 つの側面から開発効率を向上させます。

1 Spring Bootの起源

Spring Boot の導入は、Spring アプリケーションの開発、デプロイ、運用を簡素化することを目的としています。これは、規約は設定よりも重要であるという概念を採用しており、いくつかの一般的なプロジェクトの依存関係とデフォルトで自動設定を提供するため、開発者は Spring をより簡単に開始し、少ない時間と労力で Spring プロジェクトを構築できます。

Spring Boot の 2 つの主要な機能

  • 簡素化された構成: Spring Boot は、「構成よりも規則を優先する」という設計思想を採用しています。
  • 自動アセンブリ: Spring Boot は、プロジェクトの依存関係情報に基づいて Spring アプリケーションを自動的に構成し、多くの機能を提供します。
  • コード生成なし: Spring Boot はコード生成を必要とせず、簡単な構成で実行可能な Spring アプリケーションを生成できます。
  • マイクロサービス: Spring Boot は、マイクロサービス アプリケーションの構築に適しています。
  • 統合テスト: Spring Boot は、開発者が単体テストと統合テストを実行するのに便利な高速統合テストをサポートしています。

Spring Bootの3つのメリット

  • 高速な起動: Spring Boot アプリケーションは起動速度が非常に速いため、開発時間とコストを大幅に削減できます。
  • デプロイが簡単: Spring Boot アプリケーションは、デプロイ用に jar パッケージまたは war パッケージとしてパッケージ化できます。
  • メンテナンスが簡単: Spring Boot アプリケーションは、メンテナンスが簡単な構成ファイルを使用します。
  • すぐに使える: Spring Boot は、日々の開発の多くに多くの組み込み関数を提供しており、多くの場合、サードパーティの依存関係やプラグインを追加する必要はありません。
  • 豊富なエコシステム: Spring Boot エコシステムは非常に豊富で、Spring Cloud、Spring Data など、多くの優れたオープンソース プロジェクトを提供します。

2. Spring Boot クイック ビルド プロジェクト

Spring Boot ではさまざまなプロジェクト構築方法が提供されていますが、ほとんどの場合、Spring Initializr を使用してプロジェクトを作成する方法が最も一般的です。

1 Spring Bootプロジェクトの構築方法

Spring Initializr を使用してプロジェクトを作成する

Spring Initializr を使用すると、Spring Boot の新しいプロジェクトをすばやく簡単に作成できます。Spring Initializr は、Web インターフェイスとコマンドライン ツールを提供するだけでなく、多くのオプションの構成オプションも提供します。

Spring Boot CLI を使用してプロジェクトを作成する

Spring Boot CLI は、コマンドラインを通じて Spring Boot アプリケーションを作成および実行できるコマンドライン ツールです。Spring Boot CLI は、コマンドラインに慣れていて、Web インターフェイスを通じてプロジェクトを作成したくない開発者にとっては良い選択肢です。

Spring Boot CLI と Groovy DSL を使用してプロジェクトを作成する

Groovy DSL は、Spring Boot アプリケーションの作成と実行に使用できる Groovy ベースの DSL であり、開発者の生産性を大幅に向上させます。

2 Spring Boot プロジェクトの構造の紹介

Spring Boot の推奨構造によれば、メイン アプリケーション クラスと構成ファイル、コントローラー層、サービス層、データ層の 4 つの部分に分けることができます。

アプリケーションのメインクラスと構成ファイル

メイン アプリケーション クラスは Spring Boot アプリケーションのエントリ ポイントであり、データベース接続、ポート、その他の情報は構成ファイルを通じて指定されます。

設定ファイルは、application.properties 形式と application.yml 形式に分かれており、最後のファイル形式は、yaml ファイル形式でリストを示すために使用される中括弧または角括弧であり、サポートされていません。

コントローラ層

コントローラー層は、HTTP リクエストの受信、HTTP レスポンスの処理、および処理のためにサービス層やデータ層などを呼び出します。@RestController アノテーションを使用して、Spring Boot アプリケーションを完全な Web サービスに変えます。

サービス層

サービス層はビジネス処理を担当し、データ操作のためにデータ層の関連メソッドを呼び出します。一般に、@Service アノテーションはサービス クラスをマークするために使用されます。

データ層

データ層はデータの保存と読み取りを担当し、データ操作に Spring Data JPA などのフレームワークを使用できます。

Spring Boot の自動構成原理

Spring Boot の自動構成では、Spring 開発者の意識を維持しながら、依存関係分析とインテリジェントなインフラストラクチャ スタイルを通じて Spring アプリケーションを自動的に構成できます。Spring Boot 自体は、コード生成や複雑な構成方法に依存しません。

Spring Boot の自動構成機能

Spring Boot の自動構成の中心原則は、規則が構成よりも重要であるということです。その特徴は次のとおりです。

  • 制限されたオーバーヘッド: 自動構成が有効になっている場合のみ、アプリケーションが自動的に構成されます。
  • セキュリティ原則: Spring Boot は、明示的な構成がなければインフラストラクチャを自動的に有効にしません。
  • スケーラビリティ: アプリケーションは自動構成のメリットを享受したり、アプリケーションにとって役に立たない構成を無効にしたりできます。

Spring Boot自動構成のロード順序

@EnableAutoConfiguration アノテーションによって自動構成が有効になると、Spring Boot は完全にロードされるまで、特定のルールに従って自動構成項目を順番にロードします。自動設定ロードのシーケンスは次のとおりです。

  1. spring-boot-autoconfigure.jar/META-INF/spring.factories の EnableAutoConfiguration。
  2. META-INF/spring.factories からの Bean 定義は、条件に基づいて現在のアプリケーションのクラスパスによって自動的に構成されます。

3. Spring Boot開発における共通技術

1 Spring Boot の MVC アーキテクチャ

1.1 Spring Boot MVCの基本概念

Spring Boot アプリケーションの開発と設計では、さまざまなテクノロジとフレームワークが一般的に使用されますが、その中でも Spring Boot の MVC アーキテクチャが一般的な開発手法です。このアーキテクチャは、Web アプリケーションの開発を簡素化するモデル ビュー コントローラー (MVC) アーキテクチャを提供します。

アプリケーションは、アーキテクチャ全体で次の 3 つの部分に分割できます。

  • 模型(Model): データの保存と送信を担当し、データ操作の方法を提供します。
  • 视图(View): データ (通常は HTML ページ) を表示するために使用されます。
  • 控制器(Controller): ユーザーリクエストを受信し、対応する操作を実行します。

Spring Boot MVC では、@Controllerコントローラー クラスをマークするためにアノテーションがよく使用され、@RequestMappingリクエストに応答する URL アドレスを指定するためにコントローラー クラス内のメソッドをマークするためにアノテーションが使用されます。メソッド内では、@RequestParamまたは@PathVariableアノテーションを使用してリクエストパラメータまたはパスパラメータを取得できます。

コード例:

@Controller
@RequestMapping("/users")
public class UserController {
    
    
    @GetMapping("/{userId}")
    public String getUserInfo(@PathVariable Long userId, Model model) {
    
    
        // 根据userId从数据库中获取User对象信息
        User user = userService.getUserById(userId);
        // 将查询到的User对象信息添加到Model中
        model.addAttribute("userInfo", user);
        // 返回名为"userInfo.html"的视图页面
        return "userInfo.html";
    }

    @PostMapping("/{userId}/update")
    public String updateUser(@PathVariable Long userId, 
                             @RequestParam("userName") String userName,
                             @RequestParam("userAge") int userAge) {
    
    
        // 根据userId更新数据库中对应User对象的userName和userAge
        userService.updateUser(userId, userName, userAge);
        // 重定向到/users/{userId}接口进行查询
        return "redirect:/users/{userId}";
    }
}

1.2 Spring Boot MVC開発時の注意事項

  • 記述する際は@Controller各メソッドの戻り値の型がString型であることに注意し、戻り値で返すビュー名やリダイレクト先、転送先のアドレスを指定してください。
  • アプリケーションを開発するときは、JSP ビュー ファイルを/resources/templatesディレクトリに配置し、すべての静的ファイル (css、js、画像など) をディレクトリに配置することをお勧めします/resources/static
  • 複雑なデータ操作ロジックが発生した場合、サービス層を使用して特定のビジネス ロジックをカプセル化し、コントローラーの負担を軽減できます。
  • アプリケーションを開発する際には、Spring Bootの自動設定機能を活用して設定作業を簡略化するとよいでしょう。

2 Spring Boot は MyBatis フレームワークを統合します

MyBatis は、XML または注釈を介してオブジェクトをデータベース テーブルにマップする Java 永続層フレームワークです。Spring Boot は、MyBatis フレームワークを統合するための非常に便利な方法を提供し、開発者がより効率的かつ便利にデータ操作を実行できるようにします。

2.1 MyBatisを組み込んだSpring Bootの設定方法

MyBatis フレームワークを統合するように Spring Boot を構成する場合は、次の手順に従うことができます。

  • MyBatis や MyBatis-Spring などの関連する依存関係が設定されていることを確認してください。
  • データベース ドライバー関連の依存関係が pom.xml ファイルに追加されていることを確認します。
  • application.properties ファイルでデータ ソース関連の情報を構成します。
  • MyBatis マッピング ファイルを作成するか、データ操作に注釈を使用します。

application.properties のデータ ソース構成:

# 数据库驱动配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据库连接信息配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456

2.2 MyBatis の基本的な CRUD 操作

MyBatis フレームワークを通じてデータ操作を実行するには、マッピング ファイルまたは注釈を作成し、SqlSession インターフェイスのメソッドを使用して SQL ステートメントを実行する必要があります。MyBatis の基本的な CRUD 操作は次のとおりです。

  • クエリ データ操作: 注釈または XML によって実装できる選択クエリ ステートメントを使用します。
  • データの挿入操作: 注釈または XML によって実装できる挿入ステートメントを使用します。
  • データの更新操作: 注釈または XML を通じて実装できる update update ステートメントを使用します。
  • データの削除操作: delete を使用してステートメントを削除します。これはアノテーションまたは XML によって実装できます。

MyBatis の基本的な CRUD 操作:

<!-- 数据库表中的数据对象映射配置文件 -->
<!-- 查询操作(通过user_id查询对应的User对象信息) -->
<select id="getUserById" parameterType="long" resultMap="userResultMap">
    select * from t_user where user_id = #{userId}
</select>
<!-- 插入操作(插入一条新的User对象信息) -->
<insert id="insertUser" parameterType="User">
    insert into t_user(user_id,user_name,user_age) values(#{userId},#{userName},#{userAge})
</insert>
<!-- 更新操作(根据user_id更新对应的User对象信息) -->
<update id="updateUserById" parameterType="User">
    update t_user set user_name = #{userName}, user_age = #{userAge} where user_id = #{userId}
</update>
<!-- 删除操作(根据user_id删除对应的User对象信息) -->
<delete id="deleteUserById" parameterType="long">
    delete from t_user where user_id = #{userId}
</delete>

3 Spring Boot は Spring Security フレームワークを統合します

Spring Securityは、認証やアクセス制御などのセキュリティ機能をアプリケーションに提供できるSpring Frameworkベースのセキュリティフレームワークである。Spring Boot は Spring Security フレームワークを統合するための非常に便利な方法を提供し、開発者が安全なアプリケーションをより効率的かつ便利に開発できるようにします。

3.1 Spring Securityのセキュリティ認証メカニズム

Spring Security のセキュリティ認証メカニズムには、ユーザー定義のユーザー認証方法とパスワード認証方法が含まれており、メモリ、LDAP、および JDBC に基づく複数のユーザー情報認証方法がサポートされています。Spring Boot アプリケーションでは、アノテーションを通じてセキュリティ認証情報を構成できます。

Spring Security のセキュリティ認証構成:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
    
    @Autowired
    private AuthUserDetailServiceImpl authUserDetailService;
    @Autowired
    private AuthAccessDeniedHandler accessDeniedHandler;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    
    
        http.authorizeRequests()
                .antMatchers("/", "/index").permitAll()  // 设置首页和登录页允许匿名访问
                .antMatchers("/admin/**").hasRole("ADMIN")  // 设置/admin下的URL需要ADMIN角色才可以访问
                .anyRequest().authenticated()  // 其他URL都需要身份认证
                .and()
                .formLogin()
                .loginPage("/login") // 设置登录页面
                .defaultSuccessUrl("/index") // 登录成功后默认跳转的页面
                .failureUrl("/login?error")
                .permitAll()
                .and()
                .logout()
                .permitAll()
                .and()
                .exceptionHandling()
                .accessDeniedHandler(accessDeniedHandler); // 设置异常处理器
        http.csrf().disable(); // 关闭csrf保护
    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
    
    
        auth.userDetailsService(authUserDetailService).passwordEncoder(new BCryptPasswordEncoder());
    }
}

3.2 Spring Securityの共通設定方法

Spring Security の一般的な構成方法には、主に次の側面が含まれます。

  • メモリベースのユーザー情報認証方法を設定します。
  • ファイルベースのユーザー情報認証モードを設定します。
  • データベースベースのユーザー情報認証方法を設定します。
  • 役割ベースのアクセス制御を構成します。
  • HTTPS アクセス方法を設定します。

記憶型ユーザー情報認証方式:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
    
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    
    
        auth.inMemoryAuthentication()
                .withUser("user").password("{noop}password").roles("USER")
                .and()
                .withUser("admin").password("{noop}password").roles("USER", "ADMIN");
    }
}

4. Spring Boot プロジェクトのデプロイとパッケージ化

1 Spring Bootプロジェクトのパッケージ化方法

1.1 ジャーパッケージの梱包方法

Spring Boot を使用してアプリケーションを開発する場合の一般的なパッケージ化方法は、アプリケーションを実行可能な jar パッケージにパッケージ化し、コマンド ラインまたはスクリプトを通じてアプリケーションを起動することです。次のコマンドでパッケージ化できます。

mvn clean package

アプリケーション名とバージョン番号に基づいた名前の jar パッケージがターゲット ディレクトリの下に生成されます。同時に、pom.xml ファイルにプラグインを追加し、パッケージ化タイプを jar として指定する必要があります。

pom.xml ファイルで jar パッケージのパッケージ化方法を構成します。

<!-- 打包方式为jar -->
<packaging>jar</packaging>

<!-- jar包打包插件的配置 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

1.2 ウォーパッケージの梱包方法

Spring Boot アプリケーションを Web コンテナにデプロイする必要がある場合は、アプリケーションを war パッケージにパッケージ化できます。次のコマンドでパッケージ化できます。

mvn clean package -Dmaven.test.skip=true

アプリケーション名とバージョン番号に基づいた名前の war パッケージがターゲット ディレクトリに生成されます。同時に、pom.xml ファイルにプラグインを追加し、パッケージ化タイプを war として指定する必要があります。

pom.xml ファイルで war パッケージのパッケージ化方法を構成します。

<!-- 打包方式为war -->
<packaging>war</packaging>

<!-- war包打包插件的配置 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2 Spring Bootプロジェクトのデプロイ方法

2.1 従来の方法での導入

従来の方法でアプリケーションを Web コンテナにデプロイするには、Tomcat や Jetty などのさまざまな Web コンテナを使用できます。具体的な展開手順は次のとおりです。

  1. war パッケージを Web コンテナの WebApps ディレクトリにコピーします。
  2. Webコンテナを起動し、コンソールでアプリケーションの起動状況を確認します。
  3. Webコンテナが提供するURLアドレスにブラウザからアクセスすることで、アプリケーションにアクセスできます。

2.2 Dockerコンテナのデプロイ方法

Docker コンテナは、アプリケーションをミラー イメージにパッケージ化し、異なる環境にデプロイして実行できる軽量の仮想化テクノロジです。Docker コンテナを使用すると、環境の違いや依存関係の競合の問題を回避して、アプリケーションを迅速にデプロイできます。

具体的な展開手順は次のとおりです。

  1. Dockerfile を作成し、アプリケーションの基本イメージとデプロイ方法を指定して、アプリケーションをイメージ ファイルにパッケージ化します。
  2. Docker イメージを構築し、Dockerfile 内の構成パラメーターとアプリケーションをイメージ ファイルにパッケージ化します。
  3. Docker コンテナを実行し、アプリケーションを起動して、コンテナを外部ポートにマップします。外部ポートには、ブラウザを通じてアクセスして外部ポートにアクセスできます。

Dockerfile ファイルの構成:

# 指定基础镜像
FROM openjdk:8-jdk-alpine

# 构建应用程序
COPY ./target/myapplication.jar /app/

# 暴露端口
EXPOSE 8080

# 启动应用程序
CMD ["java", "-jar", "/app/myapplication.jar"]

5. まとめと振り返り

1 Spring Bootの開発動向

Spring Boot が徐々に成熟し、広く応用されるようになったことで、その開発傾向はますます明らかになってきました。今後も Spring Boot は、より効率的、便利、安全、インテリジェントな方向に開発を続け、アプリケーション シナリオと適用範囲を拡大し続けます。

2 Spring Bootの長所と短所の評価

Spring Boot の利点は主に次のとおりです。

  • アプリケーションを開発および展開するための非常に簡単な方法を提供します。
  • 多数の Spring エコシステム コンポーネントを統合し、開発の困難さと依存関係の競合を軽減します。
  • 自動構成やカスタム構成を簡単に実現できます。
  • 包括的なテストおよびデバッグ ツールを提供します。

Spring Boot の欠点は主に次のとおりです。

  • 大規模なエンタープライズ アプリケーションの複雑なニーズには適していません。
  • 自動構成には潜在的なリスクがあるため、一部のカスタマイズされた開発要件は十分に実現できません。

おすすめ

転載: blog.csdn.net/u010349629/article/details/130673472