본문 바로가기
Kotlin

Java Controller를 Kotlin Controller로

by jisung-kim 2024. 1. 8.

 

UserController.java

@RestController
public class UserController {

  private final UserService userService;

  public UserController(UserService userService) {
    this.userService = userService;
  }

  @PostMapping("/user")
  public void saveUser(@RequestBody UserCreateRequest request) {
    userService.saveUser(request);
  }

  @GetMapping("/user")
  public List<UserResponse> getUsers() {
    return userService.getUsers();
  }

  @PutMapping("/user")
  public void updateUserName(@RequestBody UserUpdateRequest request) {
    userService.updateUserName(request);
  }

  @DeleteMapping("/user")
  public void deleteUser(@RequestParam String name) {
    userService.deleteUser(name);
  }

}

 

UserController.kt

@RestController
class UserController (
    private val userService: UserService
){

    @PostMapping("/user")
    fun saveUser(@RequestBody request: UserCreateRequest){
        userService.saveUser(request)
    }

    @GetMapping("/user")
    fun getUsers(): List<UserResponse> = userService.getUsers()

    @PutMapping("/user")
    fun updateUserName(@RequestBody request: UserUpdateRequest){
        userService.updateUserName(request)
    }

    @DeleteMapping("/user")
    fun deleteUser(@RequestParam name: String){
        userService.deleteUser(name)
    }
}

 

생성자 주입

 
 //자바
 private final UserService userService;

  public UserController(UserService userService) {
    this.userService = userService;
  }
  
  //코틀린
 private val userService: UserService

자바에서는 final로 선언해주고 @Autowired를 사용하거나 @RequiredArgsConstructor를 사용한다.

코틀린에서는 어노테이션없이도 한줄로 사용이 가능하다.

 

List Return

// JAVA
@GetMapping("/user")
  public List<UserResponse> getUsers() {
    return userService.getUsers();
  }
  
  //Kotlin
@GetMapping("/user")
	fun getUsers(): List<UserResponse> = userService.getUsers()

List를 return하는데, 코틀린에서는 한줄로 끝나버린다.

함수형 으로 바로끝난다.

 

 

보면 볼수록 놀랍다.

딱보기에도 코드 수가 확 줄어들었다.

 

'Kotlin' 카테고리의 다른 글

Java Entity코드를 Kotlin Entity로..  (0) 2024.01.09
Java Service코드를 Kotlin Service코드로..  (0) 2024.01.08
JAVA DTO를 Kotlin DTO로..  (0) 2024.01.08