【Spring boot】環境構築 - ChuN6868/CodeChrysalis-fullstuck-project GitHub Wiki
jdkのインストール方法は主に下記の3種類
- OpenJDKやOracleJDKのホームページからインストール
- Jabba経由でのインストール(WindowsのJDKバージョン管理ツール)
- sdkman経由でのインストール(LinuxのJDKバージョン管理ツール)
Azureとの相性の良さからMSのOpenJDKを使用。
Microsoftの公式ホームページからWindows向けのJDKをダウンロード(X64のmsiファイル)
基本的にデフォルト設定のまま進めていくが、カスタムセットアップの画面で「set JAVA_HOME variable」をクリックし、ローカルハードドライブに全てインストールを選択。
この設定をすることで自動的に環境変数にJAVA_HOMEのPathを通すことができる。
下記コマンドを実行し、JDKのバージョンが表示されるかを確認する
java -version
JDKの切り替えのしやすさと、CLI UIの見やすさからWSLでsdkmanを導入する。 ※と思っていたが、sdkmanで入れたSDKはLinux仮想環境上にしか入らないので、Windows端末でやるには不適切。 ※sdkmanにはzipとunzipコマンドが必要なので、入っていなくてエラーが出たら下記のコマンドで入れる
sudo apt update
sudo apt install unzip zip
sdkmanは下記のコマンドでインストール
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
インストールが完了したら下記のsdkコマンドが実行可能となる
sdk list java # 利用可能なJDKの一覧表示
sdk install java 17 # JDK 17のインストール
sdk use java 17 # 一時的にJDK 17を使用
sdk default java 17 # デフォルトのJDKを17に設定
よく分からんが生成AIでは下記のような永続化の注意事項もコメントしてくれた
source ~/.sdkman/bin/sdkman-init.sh を毎回手動で実行しないために、~/.bashrc や ~/.zshrc に以下を追記しておくと便利です:
### SDKMAN! 初期化
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
Java の JDK(Java Development Kit)のパスを「通す」とは、環境変数に JDK のパスを設定することで、ターミナルやコマンドプロンプトから java や javac コマンドを使えるようにすることです。
OSによってやり方が異なるので、それぞれ説明します。
✅ Windows の場合(例:JDK 17)
- JDK のインストール先を確認
たとえば:
C:\Program Files\Java\jdk-17
- 環境変数の設定手順
Windowsキー + R → 「sysdm.cpl」入力して Enter
「システムのプロパティ」画面の「詳細設定」タブを開く
「環境変数」ボタンをクリック
「システム環境変数」セクションで以下を設定:
-
JAVA_HOME を追加
- 変数名:JAVA_HOME
- 変数値:C:\Program Files\Java\jdk-17
-
Path に %JAVA_HOME%\bin を追加
- Path を選んで「編集」→「新規」→ %JAVA_HOME%\bin を追加
- 反映を確認 コマンドプロンプトを開いて以下を実行:
java -version
javac -version
バージョン情報が表示されればOK。
下記コマンドを実行
// 管理者権限でPowerShellを開いて実行する
// PowerShellでスクリプト実行の許可を与える
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
// jabbaのインストール
// 管理者ではないユーザーで実行する
iwr -useb https://github.com/shyiko/jabba/raw/master/install.ps1 | iex
下記リンク先から、apache-maven-3.9.10-bin.zipをダウンロード
https://maven.apache.org/download.cgi
好きな場所(例:C:\Program Files\Apache\Maven)にzipファイルを展開
展開後(C:\Program Files\Apache\Maven\apache-maven-3.9.10)
変数名:MAVEN_HOME
変数値:展開先のパス(C:\Program Files\Apache\Maven\apache-maven-3.9.10)
// "\"となっている箇所は¥に置き換える
%MAVEN_HOME%\bin
下記コマンドを実行し、Mavenのバージョンが表示されれば完了
mvn -v
以下の拡張機能をVS Codeにインストールする
| 拡張機能 | 用途 |
| ------------------------------ | ------------------------------ |
| **Java Extension Pack** | Javaのサポート(コンパイル、Lint、デバッグ)【変数名】○○【値】○○ |
| **Spring Boot Extension Pack** | Spring Bootのサポート(起動、Beans確認など)【変数名】spring-boot.ls.java.home【値】JDKのパス |
| **Checkstyle for Java** | コードの静的解析ツール |
- VSCode左下の歯車⇒コマンドパレットを選択
- 「Spring Initializr: Create a Maven Project」を選択
- Spring bootのバージョンを選択(3.4系の最新をセレクト。そうしないとMyBatis Frameworkが選択できない)
- 言語を「Java」で選択
- グループIDはそのまま「com.example」でエンター(exampleの箇所は自分や組織のドメイン名などにする。もしくはGitHubアカウントなどのユーザー名)
- Artifact IDもそのまま「demo」でエンター(これがフォルダ名になる。「backend」などにするのがベター)
- packaging typeは「War」を選択
- Javaのバージョンは「17」を選択
- 依存関係(dependencies)には下記3つを選択
- Spring Web
- MyBatis Framework // DBを使わないのであれば不要
- PostgreSQL Driver // DBを使わないのであれば不要
下記のフォルダ構成でHelloControllerを作成
src/main/java/com/example/demo
├── controller
│ └── HelloController.java
└── DemoApplication.java
HelloController.javaの中身を下記のように記述
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HellorController {
@GetMapping("/api/hello")
public String getHello() {
return "Hellor World from Spring Boot";
}
}
Spring bootを起動し、localhost:8080/api/helloにアクセス
mvn spring-boot:run
application.propertiesに下記のDB接続情報を追加
spring.application.name=backend
spring.datasource.url=jdbc:postgresql://localhost:5432/<DB名>
spring.datasource.username=<ユーザー名>
spring.datasource.password=<パスワード>
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update
🌱 Spring Boot REST APIの基本構成
📁 1. プロジェクト構成(ディレクトリ構造)
src/main/java/com/example/demo
├── controller
│ └── UserController.java
├── model
│ └── User.java
├── service
│ └── UserService.java
├── repository
│ └── UserRepository.java
└── DemoApplication.java
✅ 2. 必要な依存関係(pom.xml)
Spring Initializrで以下を追加:
Spring Web
Spring Data JPA(データベースと連携するなら)
H2(インメモリDB)またはMySQL/PostgreSQL など
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 以下はDB使う場合 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
🧱 3. モデル(Entity)クラス
package com.example.demo.model;
import jakarta.persistence.*;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getter, Setter
}
📚 4. Repository(DAO)
package com.example.demo.repository;
import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
🔧 5. Serviceクラス(ビジネスロジック)
package com.example.demo.service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class UserService {
private final UserRepository repo;
public UserService(UserRepository repo) {
this.repo = repo;
}
public List<User> findAll() {
return repo.findAll();
}
public Optional<User> findById(Long id) {
return repo.findById(id);
}
public User save(User user) {
return repo.save(user);
}
public void delete(Long id) {
repo.deleteById(id);
}
}
🌐 6. Controllerクラス(RESTエンドポイント)
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService service;
public UserController(UserService service) {
this.service = service;
}
@GetMapping
public List<User> getAllUsers() {
return service.findAll();
}
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return service.findById(id).orElseThrow();
}
@PostMapping
public User createUser(@RequestBody User user) {
return service.save(user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
service.delete(id);
}
}
⚙️ 7. アプリ起動クラス
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
🧪 8. 動作確認 アプリを起動:mvn spring-boot:run
Postman や curl でAPIを叩く:
curl -X POST http://localhost:8080/api/users -H "Content-Type: application/json" -d '{"name":"Taro", "email":"[email protected]"}'
✨ 補足
DBを使わずに最初はメモリ上で簡単に試したいなら、リポジトリやサービスを使わずにControllerだけでもOKです。
エラーハンドリングやDTOの導入などは、アプリが複雑になった段階で検討すると良いです。
了解しました!Spring Boot + MyBatis + PostgreSQL を Mavenで構成する場合の具体的なセットアップ例を、完全な形でご紹介します。以下の内容をコピーして始めれば、動作する基本のAPIがすぐに作れます。
✅ 1. pom.xml の記述(Maven用)
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Spring Boot + MyBatis + PostgreSQL</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
<relativePath/>
</parent>
<properties>
<java.version>17</java.version> <!-- Java 17推奨 -->
</properties>
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Spring Boot Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
<!-- PostgreSQL JDBC Driver -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.1</version>
</dependency>
<!-- Optional: Spring Boot DevTools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Optional: Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- Spring Boot Test (必要なら) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.2.5</version>
</plugin>
</plugins>
</build>
</project>
⚙️ 2. PostgreSQL接続設定(application.yml)
spring:
datasource:
url: jdbc:postgresql://localhost:5432/your_database
username: your_user
password: your_password
driver-class-name: org.postgresql.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.model
※ .properties でも同様に設定可能です。
🧪 3. Mavenコマンド 以下のコマンドで動作確認ができます。
// 依存関係のダウンロードとビルド
mvn clean install
// Spring Bootアプリの起動
mvn spring-boot:run
🗂️ フォルダ構成の例
src/main/java/com/example/demo
├── DemoApplication.java
├── controller
│ └── UserController.java
├── model
│ └── User.java
├── mapper
│ └── UserMapper.java
├── service
│ └── UserService.java
src/main/resources
├── application.yml
└── mapper
└── UserMapper.xml
✅ 次のステップ 上記でプロジェクトの構成が整ったら:
users テーブルをPostgreSQLに作成
サンプルデータを投入
Controllerから /api/users にアクセスして一覧取得確認