Eclipse
Z
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
EclipseでSpring Bootプロジェクトを作成・実行する
Spring Tool Suite(STS)プラグインを使ってEclipseでSpring Bootプロジェクトを作成し、REST APIを実装して実行するまでを解説します。
一言結論
EclipseにSpring Tools 4を導入すれば「Spring Starter Project」ウィザードから依存関係を選ぶだけでSpring Bootプロジェクトが即座に生成でき、IDE上でホットリロードも利用できる。
Spring Tool Suite(STS)プラグインの導入
Help > Eclipse Marketplace で「Spring Tools」を検索し、Spring Tools 4 をインストールします。
または Spring Tools から Eclipse をベースにした STS をダウンロードすることもできます。
Spring Bootプロジェクトの作成
File > New > Spring Starter Project- プロジェクト設定:
- Name:
myapp - Type: Maven
- Java Version: 17
- Group:
com.example - Artifact:
myapp
- Name:
- 依存関係を選択:
Spring WebSpring Data JPA(データベースを使う場合)H2 Database(開発用インメモリDB)Lombok(ボイラープレート削減)
Finish
プロジェクト構造
myapp/
├── src/main/java/com/example/myapp/
│ ├── MyappApplication.java ← エントリーポイント
│ ├── controller/
│ │ └── UserController.java
│ ├── service/
│ │ └── UserService.java
│ └── repository/
│ └── UserRepository.java
├── src/main/resources/
│ └── application.properties
└── pom.xml
シンプルなREST APIを作る
エントリーポイント
@SpringBootApplication
public class MyappApplication {
public static void main(String[] args) {
SpringApplication.run(MyappApplication.class, args);
}
}
エンティティ
@Entity
@Table(name = "users")
@Data // Lombok: getter/setter/toString/equals/hashCode
@NoArgsConstructor
@AllArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
private String email;
}
リポジトリ
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
Optional<User> findByEmail(String email);
}
サービス
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
public List<User> findAll() {
return userRepository.findAll();
}
public Optional<User> findById(Long id) {
return userRepository.findById(id);
}
public User create(User user) {
return userRepository.save(user);
}
public void delete(Long id) {
userRepository.deleteById(id);
}
}
コントローラー
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {
private final UserService userService;
@GetMapping
public List<User> getAll() {
return userService.findAll();
}
@GetMapping("/{id}")
public ResponseEntity<User> getById(@PathVariable Long id) {
return userService.findById(id)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public User create(@RequestBody @Valid User user) {
return userService.create(user);
}
@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable Long id) {
userService.delete(id);
}
}
application.properties
# H2 コンソール有効化(開発時)
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb
# JPA 設定
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
# サーバーポート
server.port=8080
Eclipse から実行する
MyappApplication.javaを右クリックRun As > Spring Boot App
コンソールに Started MyappApplication が表示されれば起動成功です。
動作確認
# 全件取得
curl http://localhost:8080/api/users
# 作成
curl -X POST http://localhost:8080/api/users \
-H "Content-Type: application/json" \
-d '{"name":"Alice","email":"alice@example.com"}'
# H2コンソール(ブラウザ)
# http://localhost:8080/h2-console
# JDBC URL: jdbc:h2:mem:testdb
Spring Boot Dashboard(STS追加機能)
STS プラグインを入れると Spring Boot Dashboard ビューが使えます。
Window > Show View > Spring Boot Dashboard
起動しているサービスの一覧、停止・再起動ボタンが使えます。
まとめ
Eclipse + STS プラグインで Spring Boot の開発が快適になります。Spring Starter Project ウィザードで依存関係を選ぶだけで即座に動くプロジェクトが作れます。Lombok を使うことで getter/setter の定型コードも大幅に削減できます。