【Spring boot】環境構築 - ChuN6868/CodeChrysalis-fullstuck-project GitHub Wiki

JDKの環境変数設定

jdkのインストール

jdkのインストール方法は主に下記の3種類

  • OpenJDKやOracleJDKのホームページからインストール
  • Jabba経由でのインストール(WindowsのJDKバージョン管理ツール)
  • sdkman経由でのインストール(LinuxのJDKバージョン管理ツール)

Microsoft公式のOpenJDKの場合

Azureとの相性の良さからMSのOpenJDKを使用。

公式からmsiファイルをダウンロード

Microsoftの公式ホームページからWindows向けのJDKをダウンロード(X64のmsiファイル) image

msiファイルの実行

基本的にデフォルト設定のまま進めていくが、カスタムセットアップの画面で「set JAVA_HOME variable」をクリックし、ローカルハードドライブに全てインストールを選択。
この設定をすることで自動的に環境変数にJAVA_HOMEのPathを通すことができる。

JDKの確認

下記コマンドを実行し、JDKのバージョンが表示されるかを確認する

java -version

sdkmanの場合

JDKの切り替えのしやすさと、CLI UIの見やすさからWSLでsdkmanを導入する。 ※と思っていたが、sdkmanで入れたSDKはLinux仮想環境上にしか入らないので、Windows端末でやるには不適切。 ※sdkmanにはzipとunzipコマンドが必要なので、入っていなくてエラーが出たら下記のコマンドで入れる

sudo apt update
sudo apt install unzip zip

sdkmanインストール

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"

pathを通す

Java の JDK(Java Development Kit)のパスを「通す」とは、環境変数に JDK のパスを設定することで、ターミナルやコマンドプロンプトから java や javac コマンドを使えるようにすることです。

OSによってやり方が異なるので、それぞれ説明します。

✅ Windows の場合(例:JDK 17)

  1. JDK のインストール先を確認
    たとえば:
C:\Program Files\Java\jdk-17
  1. 環境変数の設定手順 Windowsキー + R → 「sysdm.cpl」入力して Enter
    「システムのプロパティ」画面の「詳細設定」タブを開く
    「環境変数」ボタンをクリック
    「システム環境変数」セクションで以下を設定:
  • JAVA_HOME を追加

    • 変数名:JAVA_HOME
    • 変数値:C:\Program Files\Java\jdk-17
  • Path に %JAVA_HOME%\bin を追加

    • Path を選んで「編集」→「新規」→ %JAVA_HOME%\bin を追加
  1. 反映を確認 コマンドプロンプトを開いて以下を実行:
java -version
javac -version

バージョン情報が表示されればOK。

jabbaの場合

jabbaのインストール

下記コマンドを実行

// 管理者権限でPowerShellを開いて実行する
// PowerShellでスクリプト実行の許可を与える
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

// jabbaのインストール
// 管理者ではないユーザーで実行する
iwr -useb https://github.com/shyiko/jabba/raw/master/install.ps1 | iex

Mavenのインストール

公式ホームページからzipファイルを取得

下記リンク先から、apache-maven-3.9.10-bin.zipをダウンロード
https://maven.apache.org/download.cgi

zipファイルの展開

好きな場所(例: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)

Pathの設定

// "\"となっている箇所は¥に置き換える
%MAVEN_HOME%\bin

最終確認

下記コマンドを実行し、Mavenのバージョンが表示されれば完了

mvn -v

VSCodeでのSpring boot環境構築

拡張機能のインストール

以下の拡張機能をVS Codeにインストールする

| 拡張機能                           | 用途                             |
| ------------------------------ | ------------------------------ |
| **Java Extension Pack**        | Javaのサポート(コンパイル、Lint、デバッグ)【変数名】○○【値】○○     |
| **Spring Boot Extension Pack** | Spring Bootのサポート(起動、Beans確認など)【変数名】spring-boot.ls.java.home【値】JDKのパス |
| **Checkstyle for Java**             | コードの静的解析ツール        |

プロジェクトの作成まで

  1. VSCode左下の歯車⇒コマンドパレットを選択
  2. 「Spring Initializr: Create a Maven Project」を選択
  3. Spring bootのバージョンを選択(3.4系の最新をセレクト。そうしないとMyBatis Frameworkが選択できない)
  4. 言語を「Java」で選択
  5. グループIDはそのまま「com.example」でエンター(exampleの箇所は自分や組織のドメイン名などにする。もしくはGitHubアカウントなどのユーザー名)
  6. Artifact IDもそのまま「demo」でエンター(これがフォルダ名になる。「backend」などにするのがベター)
  7. packaging typeは「War」を選択
  8. Javaのバージョンは「17」を選択
  9. 依存関係(dependencies)には下記3つを選択
  • Spring Web
  • MyBatis Framework // DBを使わないのであれば不要
  • PostgreSQL Driver // DBを使わないのであれば不要

HelloWorld(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

HelloWorld(PostgreSQLのDB使用する場合)

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

以下、生成AIの回答(未整理)

フォルダ構成

🌱 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の導入などは、アプリが複雑になった段階で検討すると良いです。

MyBatis×PostgreSQL×Maven

了解しました!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 にアクセスして一覧取得確認

⚠️ **GitHub.com Fallback** ⚠️