1. 서론
Laravel에서 Spring Boot로 전환할 때 가장 큰 변화 중 하나는 라우팅(경로 설정)과 컨트롤러 구조입니다.
Laravel에서는 routes/web.php 또는 routes/api.php를 사용해 라우트를 정의하지만, Spring Boot에서는 @RestController 및 @RequestMapping을 활용해 컨트롤러를 구성합니다.
이번 글에서는 Laravel의 라우팅 및 컨트롤러를 Spring Boot로 변환하는 방법을 단계별로 살펴보겠습니다.
✅ 라우팅 파일 변환 (routes/web.php → @RequestMapping)
✅ 컨트롤러 변환 (Http/Controllers/ → @RestController)
✅ GET, POST, PUT, DELETE 요청 변환
✅ 미들웨어(Auth, JWT) 적용 방법
2. Laravel과 Spring Boot의 라우팅 구조 비교
비교 항목Laravel (PHP)Spring Boot (Java)
라우팅 파일 | routes/web.php, routes/api.php | 컨트롤러 내부 @RequestMapping |
기본 컨트롤러 | app/Http/Controllers/ 디렉토리 | controller/ 패키지 |
라우트 정의 방식 | Route::get('/users', [UserController::class, 'index']); | @GetMapping("/users") |
미들웨어 적용 | Route::middleware(['auth']) | @PreAuthorize("hasRole('USER')") |
✅ 변환 전략
• Laravel의 routes/web.php에서 정의된 경로를 Spring Boot의 @RequestMapping으로 변환
• Laravel의 컨트롤러를 Spring Boot의 @RestController로 변환
• 미들웨어 및 인증 로직 적용 방식 변경
3. GET 요청 변환 (기본 데이터 조회)
🔹 Laravel의 GET 요청 (routes/web.php + 컨트롤러)
// routes/web.php
Route::get('/users', [UserController::class, 'index']);
// app/Http/Controllers/UserController.php
namespace App\Http\Controllers;
use App\Models\User;
class UserController extends Controller {
public function index() {
return User::all();
}
}
🔹 Spring Boot의 GET 요청 변환 (@GetMapping)
// UserController.java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
}
✅ 변환 전략
• Route::get('/users', ...) → @GetMapping("/users")
• Laravel의 Eloquent ORM → Spring Boot의 UserService 및 JPA 활용
4. POST 요청 변환 (데이터 생성)
🔹 Laravel의 POST 요청 (routes/web.php + 컨트롤러)
Route::post('/users', [UserController::class, 'store']);
public function store(Request $request) {
$user = User::create($request->all());
return response()->json($user, 201);
}
🔹 Spring Boot의 POST 요청 변환 (@PostMapping)
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
User savedUser = userService.saveUser(user);
return ResponseEntity.status(HttpStatus.CREATED).body(savedUser);
}
✅ 변환 전략
• Route::post('/users', ...) → @PostMapping("/users")
• $request->all() → @RequestBody User user
• response()->json(..., 201) → ResponseEntity.status(HttpStatus.CREATED).body(...)
5. PUT 요청 변환 (데이터 수정)
🔹 Laravel의 PUT 요청 (routes/web.php + 컨트롤러)
Route::put('/users/{id}', [UserController::class, 'update']);
public function update(Request $request, $id) {
$user = User::findOrFail($id);
$user->update($request->all());
return response()->json($user);
}
🔹 Spring Boot의 PUT 요청 변환 (@PutMapping)
@PutMapping("/{id}")
public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User userDetails) {
User updatedUser = userService.updateUser(id, userDetails);
return ResponseEntity.ok(updatedUser);
}
✅ 변환 전략
• Route::put('/users/{id}', ...) → @PutMapping("/{id}")
• findOrFail($id) → userService.updateUser(id, userDetails)
• $user->update($request->all()) → userService.updateUser(id, userDetails)
6. DELETE 요청 변환 (데이터 삭제)
🔹 Laravel의 DELETE 요청 (routes/web.php + 컨트롤러)
Route::delete('/users/{id}', [UserController::class, 'destroy']);
public function destroy($id) {
User::destroy($id);
return response()->json(null, 204);
}
🔹 Spring Boot의 DELETE 요청 변환 (@DeleteMapping)
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
return ResponseEntity.noContent().build();
}
✅ 변환 전략
• Route::delete('/users/{id}', ...) → @DeleteMapping("/{id}")
• User::destroy($id) → userService.deleteUser(id)
• response()->json(null, 204) → ResponseEntity.noContent().build()
7. 미들웨어 변환 (Auth, JWT 적용)
Laravel에서는 미들웨어를 사용하여 인증을 처리합니다.
Spring Boot에서는 Spring Security + JWT를 활용하여 인증을 적용합니다.
🔹 Laravel의 미들웨어 적용 방식
Route::middleware(['auth'])->get('/users', [UserController::class, 'index']);
🔹 Spring Boot의 Security 적용 (@PreAuthorize)
@PreAuthorize("hasRole('USER')")
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
✅ 변환 전략
• Laravel의 Route::middleware(['auth']) → Spring Boot의 @PreAuthorize 적용
• Spring Security 설정 추가 필요
8. 결론
✅ Laravel의 routes/web.php를 Spring Boot의 @RestController 및 @RequestMapping으로 변환하는 방법 설명
✅ GET, POST, PUT, DELETE 요청 처리 방식 비교 및 변환 예제 제공
✅ 다음 글에서는 “Spring Security를 활용한 인증 & JWT 적용”을 다룰 예정!
'SpringBoot from Laravel' 카테고리의 다른 글
Spring Boot에서 API 보안 강화: Laravel과 비교한 JWT + OAuth2 적용 (0) | 2025.02.13 |
---|---|
Spring Boot 성능 최적화: Laravel 대비 성능 향상 방법 (0) | 2025.02.13 |
Spring Boot에서 API 개발 최적화: Laravel API → Spring Boot REST API (0) | 2025.02.12 |
Spring Boot에서 사용자 권한(Role) 관리: Laravel의 Gates & Policies vs Spring Security (0) | 2025.02.08 |
Spring Boot에서 인증 적용: Laravel Auth → Spring Security & JWT (0) | 2025.02.07 |
데이터베이스 변환: Laravel Eloquent → Spring Boot JPA (Hibernate) (0) | 2025.02.07 |
Laravel > Spring Boot 전환 전체 프로세스 (0) | 2025.02.07 |
왜 Laravel에서 Spring Boot로 전환하는가? (0) | 2025.02.07 |