# Spring Boot

### 1. 概要

***

> Spring Bootは、新しいSpringアプリケーションのブートストラップと\
> 開発を簡素化するために設計された、Springエコシステムの強力なフレームワークです。\
> Spring Bootフレームワークは、\
> Webアプリケーション開発に必要な即時使用可能な機能を多様に提供し、\
> コーディング時間を最小限に抑え、生産性を向上させることを目指しています。

Spring Bootの場合、現在Spring Boot 2とSpring Boot 3をサポートしています。 \
Spring Boot 2はJDK 11とJDK17バージョンを選択してビルドや配布が可能で、\
Spring Boot 3はJDK 17バージョンのみ可能です。

AppPaaSではGradle WrapperとMaven Wrapperを基盤にビルドをしています。 \
つまり、ソース内にGradle WrapperやMaven Wrapperがない場合、ビルドができず失敗します。

Spring InitializrやIDEを使ってソースを作成する場合、\
ほとんどWrapperが含まれている形で作成されますが、\
別途追加が必要な場合は下記のドキュメントを確認して作業します。&#x20;

Gradle Wrapper Doc: <https://docs.gradle.org/current/userguide/gradle\\_wrapper.html> \
Maven Wrapper Doc: <https://maven.apache.org/wrapper/&#x20>;

ビルド時、jarファイルはserver.jarに名前が変更され、その名前でデプロイされて実行されます。 \
Spring Bootを使う時、ビルドやデプロイに関する設定はそれぞれ下記のようになります。

### 2. サービス環境設定

***

<figure><img src="https://3756387927-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fuge4ynyWrv4chg2JFLbY%2Fuploads%2FAiJj4jJ2rI0pYgpKE0gY%2Fimage.png?alt=media&#x26;token=3761653c-5564-415d-bf6b-f0d2c43d6e8c" alt=""><figcaption></figcaption></figure>

#### 内部ポート

サービスがデプロイされた後にリッスンされるポートを指します。\
一般的に、Spring Webアプリケーションを作成する際には8080ポートが使用されますが、\
ソース内でそのポートを変更した場合は、変更した値を入力する必要があります。\
AppPaaSのベータ版では、指定されたポートに基づいてTCPヘルスチェックが行われます。

#### 外部ポート、外部ポートの公開設定

サービスをパブリックに公開するかどうかを決定する設定です。\
デフォルトでは443に設定されており、公開設定にすると外部ドメインが割り当てられ、\
https\://{割り当てられたアドレス}を通じて外部からアクセスできます。\
非公開に設定した場合、外部からのアクセスは不可能となり、\
内部ドメインアドレスを介してのみサービス間の通信がサポートされます。

#### 自動デプロイ設定

自動デプロイを設定すると、リポジトリの選択したブランチに変更があった場合、\
その変更に対するフックを受けて、自動的にビルドおよびデプロイが進行します。

### 3. 高度な環境設定

***

<figure><img src="https://3756387927-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fuge4ynyWrv4chg2JFLbY%2Fuploads%2FiKIbfOerrKQvGmRVHOyE%2Fimage.png?alt=media&#x26;token=dd61e891-979d-4a35-85ef-fbc7d6d31022" alt=""><figcaption></figcaption></figure>

#### ビルドコマンド

リポジトリを選択し、ビルドコマンドをオーバーライドしない場合、gradlewで実行されます。\
この場合、gradlew clean buildコマンドが実行され、mavenを使用したい場合は、\
ビルドコマンドをオーバーライドしてmvnw clean installを記載してください。\
それ以外のコマンドを実行したい場合は、\
希望するコマンドを直接記載してオーバーライドすることができます。

{% hint style="danger" %}
warビルドはサポートされていません また、\
同じ言語の別のフレームワークをデプロイするために高度な設定を利用することは\
推奨されていません。
{% endhint %}

#### 開始コマンド

前述のように、すべてのjarファイルはserver.jarに名前が変更されるため、\ <mark style="background-color:yellow;">java -jar server.jar</mark>コマンドで実行されます。この値もオーバーライド可能です。

#### 環境変数

環境変数はKey/Value形式で入力され、\
入力された値はコンテナOSの環境変数として注入されます。\
注入された環境変数は、コード内でSystem.getenv()または\
System.getProperty()を使用して取得できます。また、\
開始コマンドでも使用できます。例えば、プレーンな環境変数として\
KEY: ENV、value: devと定義した場合、以下のように開始コマンドで使用できます。

```
java -jar server.jar -Dspring.profiles.active=$ENV
```
