@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