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 |