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 |