@RestController // #1
@RequiredArgsConstructor
public class BoardController {
private final BoardService boardService; // #2
@PostMapping("/api/post") // #3
public BoardResponseDto createPost(@RequestBody BoardRequestsDto requestsDto) {
return boardService.createPost(requestsDto); // #4
}
}
@Controller : 주로 View 반환, @ResponseBody 와 사용하면 @RestController 와 같은 기능@RestController : @Controller + @ResponseBody, 주로 JSON/XML 형태로 객체 데이터 반환BoardService 객체를 가지고, 서비스에서 받아온 데이터를 전달하거나, 서비스 로직을 호출할 수 있다.createPost 함수를 호출하고, 리턴값으로 데이터를 받아와 클라이언트로 반환한다.@Service // #1
@RequiredArgsConstructor
public class BoardService {
private final BoardRepository boardRepository; // #2
@Transactional
public BoardResponseDto createPost(BoardRequestsDto requestsDto) {
Board board = new Board(requestsDto);
boardRepository.save(board); // #3
return new BoardResponseDto(board);
}
}
@Service - Service로 지정해주는 어노테이션BoardReposiotry 객체를 통해 데이터를 데이터베이스에 저장하거나, 데이터베이스로부터 데이터를 가져온다.save 함수를 호출해 board 객체 데이터를 데이터베이스에 저장하도록 한다.@Repository // #1
public interface BoardRepository extends JpaRepository<Board, Long> { // #2
}
@Repository - Reposiotry로 지정해주는 어노테이션JpaRepository 를 상속받는다. 이 때 제네릭스 타입은 <엔티티 타입, PK 타입> 이다.[참고]
https://velog.io/@seungho1216/Spring-BootController-Service-Repository에-대하여
https://velog.io/@daydream/Spring-Controller-Service-Repository-DAO