Spring Boot: Web アプリ構築

アノテーションベースで素早く REST API を構築。

Spring Boot
Web アプリ構築フレームワーク。
Controller
HTTPリクエストを処理。
DI
依存性注入。@Autowired。
Instant Noodle

Spring Bootは「カップ麺」。 サーブレット = 麺を一から作る Spring Boot = お湯を注ぐだけで完成 設定より規約(Convention over Configuration)。

Spring Boot

@SpringBootApplication, @RestController
// Spring Boot - Web アプリケーションを素早く構築
// プロジェクト生成: https://start.spring.io/
// pom.xml (Maven) の依存関係
// <dependency>
// <groupId>org.springframework.boot</groupId>
// <artifactId>spring-boot-starter-web</artifactId>
// </dependency>
// メインクラス
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
// REST コントローラー
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return userService.save(user);
}
}
実行結果
$ ./mvnw spring-boot:run
Started Application in 2.5 seconds
$ curl localhost:8080/api/users
[{"id":1,"name":"Alice"}]
Bad
// ❌ Bad: サーブレットを手動で設定
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest req,
HttpServletResponse resp) {
// 膨大なボイラープレート
}
}
Good
// ✅ Good: Spring Boot のアノテーション
@GetMapping("/hello")
public String hello() {
return "Hello World";
}

パターン

Service, Repository, Entity
// サービス層
@Service
public class UserService {
@Autowired
private UserRepository repository;
public List<User> findAll() {
return repository.findAll();
}
}
// リポジトリ層 (JPA)
@Repository
public interface UserRepository
extends JpaRepository<User, Long> {
List<User> findByName(String name);
}
// エンティティ
@Entity
public class User {
@Id @GeneratedValue
private Long id;
private String name;
private String email;
}
// application.properties
// server.port=8080
// spring.datasource.url=jdbc:h2:mem:testdb
// spring.jpa.hibernate.ddl-auto=update
// 起動
// $ ./mvnw spring-boot:run
// $ curl http://localhost:8080/api/users
Tip: start.spring.io でプロジェクトを生成。

合格ライン

REST API を作れる
Controller/Service/Repository を使い分けられる

参考リンク

演習課題

課題1: REST API
@RestController で CRUD API を作成してください。
課題2: Spring Initializr
start.spring.io でプロジェクトを生成してください。

次のステップ