TIL

20240902_TIL

Coding-Su 2024. 9. 3. 08:18
728x90

1. 내일배움캠프 Sping 

몇일 동안 Spring Security와 Validation에 관하여 공부하였습니다. 오늘 팀 프로젝트를 시작하였습니다.

 

2. 김영한의 스프링 기본편

세션 7까지 완료하여 싱글톤 컨테이너와 컴포넌스 스캔에 관하여 공부하였습니다.

  https://coding-su.tistory.com/163

 

[Spring] 싱글톤 컨테이너 - 강의 정리

강의스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 강의 | 김영한 - 인프런김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질

coding-su.tistory.com

 

3. 스프링 숙련 프로젝트

이번주에 팀 프로젝트가 시작되었습니다. API명세서를 작성하고 ERD diagram도 작성 후 프로젝트를 시작하였습니다.

저는 오늘 게시글에 관한 CRUD의 기초 부분은 완성 한 상태이고 유저 부분이 완성 된다면 추가적으로 수정할 예정입니다.

https://github.com/KJG04/sparta-news-feed

 

GitHub - KJG04/sparta-news-feed

Contribute to KJG04/sparta-news-feed development by creating an account on GitHub.

github.com

 

API명세서

 

ERD diagram

 

 

Boards contorller

@RestController
@RequestMapping("/boards")
@RequiredArgsConstructor
public class BoardsController {

    private final BoardsService boardsService;

    @PostMapping("")
    public BoardsResponseDto createBoard(@RequestBody BoardsRequestDto boardsRequestDto) {
        return boardsService.createBoard(boardsRequestDto);
    }

    @GetMapping("/{boardId}")
    public BoardsResponseDto getOneBoard(@PathVariable("boardId") Long boardId) {
        return boardsService.getOneBoard(boardId);
    }

    @GetMapping("")
    public List<BoardsResponseDto> getAllBoards() {
        return boardsService.getAllBoards();
    }

    @PatchMapping("/{boardId}")
    public BoardsResponseDto patchBoard(@PathVariable("boardId") Long boardId, @RequestBody BoardsRequestDto boardsRequestDto) {
        return boardsService.patchBoard(boardId, boardsRequestDto);
    }

    @DeleteMapping("/{boardId}")
    public Long deleteBoard(@PathVariable("boardId") Long boardId) {
        return boardsService.deleteBoard(boardId);
    }
}

 

BoardsService

@Service
@RequiredArgsConstructor
public class BoardsService {

    private final BoardsRepository boardsRepository;

    public BoardsResponseDto createBoard(BoardsRequestDto boardsRequestDto) {
        Boards boards = new Boards(boardsRequestDto);
        return new BoardsResponseDto(boardsRepository.save(boards));
    }

    public BoardsResponseDto getOneBoard(Long boardId) {
        return new BoardsResponseDto(getOneBoardWithId(boardId));
    }

    public List<BoardsResponseDto> getAllBoards() {
        return boardsRepository.findAll().stream().map(BoardsResponseDto::new).toList();
    }

    @Transactional
    public BoardsResponseDto patchBoard(Long boardId, BoardsRequestDto boardsRequestDto) {
        Boards board = getOneBoardWithId(boardId);
        return new BoardsResponseDto(board.update(boardsRequestDto));
    }

    @Transactional
    public Long deleteBoard(Long boardId) {
        boardsRepository.delete(getOneBoardWithId(boardId));
        return boardId;
    }

    private Boards getOneBoardWithId(Long boardId) {
        return boardsRepository.findById(boardId).orElseThrow(() -> new IllegalArgumentException("게시글 ID를 찾을 수 없습니다."));
    }
}

 

BoardsRepository

@Repository
public interface BoardsRepository extends JpaRepository<Boards, Long> {
}
728x90

'TIL' 카테고리의 다른 글

20240904_TIL  (0) 2024.09.05
20240903_TIL  (0) 2024.09.03
20240826_TIL  (0) 2024.08.27
20240816_TIL  (0) 2024.08.19
20240813_TIL  (0) 2024.08.14