| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- mycli
- Pager
- 알고리즘
- 오일러 경로
- 인프런워밍업클럽
- spring boot
- 티스토리챌린지
- 이진탐색
- MySQL
- 욕심쟁이 방법
- table status
- oh-my-zsh
- CS스터디
- 스터디2기
- zsh theme
- 인프런
- Less
- 맥
- mysql 표 출력
- 분할정복 방법
- mysql 표
- 동적 프로그래밍 방법
- VI
- 데이크스트라
- 순차탐색
- 네트워킹데이
- zsh
- 오블완
- 터미널
- cs
- Today
- Total
목록2025/11 (9)
Develop
안녕하세요 .ᐟ지난 시간에 파일 업로드 기본 구조를 만들었다면, 오늘은 게시글에 여러 이미지를 첨부하는 기능을 구현해보겠습니다.실제 서비스처럼 게시글당 최대 10개의 이미지를 업로드하고, 순서를 관리하며, 삭제까지 할 수 있도록 만들어 보겠습니다. 구현할 기능게시글 복수 이미지 업로드 (최대 10개)이미지 순서 관리 (displayOrder)이미지 목록 조회개별 이미지 삭제이미지 파일 브라우저에서 보기 왜 별도 Entity가 필요한가?처음엔 Post Entity에 String images 필드를 하나 만들어서 쉼표로 구분하면 되지 않을까? 라고 생각했습니다. // 안 좋은 설계private String images; // "image1.jpg,image2.jpg,image3.jpg"하지만 이렇게 하면 ..
안녕하세요 .ᐟ 오늘은 Spring Boot에서 파일 업로드를 어떻게 안전하게 구현하는지 알아보겠습니다.파일 업로드는 프로필 이미지, 게시글 첨부파일 등 다양한 곳에서 사용되는 필수기능입니다. 구현할 기능:프로필 이미지 업로드 API파일 검증 (크기, 확장자, 보안)UUID 기반 파일명 생성 1. 파일 업로드 설정application.properties# 파일 업로드 설정spring.servlet.multipart.enabled=truespring.servlet.multipart.max-file-size=10MB # 개별 파일 최대 크기spring.servlet.multipart.max-request-size=50MB # 전체 요청 최대 크기spring.servlet.multipa..
안녕하세요 .ᐟ오늘은 Spring Boot 프로젝트에서 통합 테스트를 작성하는 방법을 정리합니다.어제 작성한 단위 테스트와 달리, 통합 테스트는 실제 Spring 컨테이너를 띄워서 여러 레이어가 함께 잘 동작하는지 검증하는 테스트입니다. MockMvc를 활용해 HTTP 요청을 시뮬레이션하고, Fixture 패턴으로 테스트 데이터를 관리하는 방법을 배웠습니다~단위 테스트 vs 통합 테스트범위개별 메서드 (Service 레이어)여러 컴포넌트 (Controller → Service → Repository)Spring 컨테이너❌ 사용 안함✅ 실제로 띄움DBMock 객체실제 DB (H2)속도빠름 (0.1초)느림 (2-3초)목적비즈니스 로직 검증API 전체 플로우 검증 테스트 환경 구성1. 의존성 추가depende..
안녕하세요 .ᐟ 오늘은 Spring Boot 프로젝트에서 단위 테스트를 작성하는 방법을 정리합니다. JUnit 5와 Mockito를 활용해 Service 레이어의 비즈니스 로직을 테스트했고, given-when-then 패턴을 적용해 가독성 높은 테스트 코드를 작성해봤습니다~ 단위 테스트란?단위 테스트는 애플리케이션의 가장 작은 단위를 독립적으로 검증하는 테스트입니다.Spring Boot에서는 주로 Service 레이어의 메서드를 테스트합니다. 테스트 종류구분범위특징단위 테스트개별 메서드Mock 사용, 빠른 실행통합 테스트여러 컴포넌트실제 DB 연동E2E 테스트전체 시스템실제 사용자 시나리오 테스트 환경 구성build.gradledependencies { testImplementatio..
안녕하세요 .ᐟ게시판 프로젝트 5일차입니다. 오늘은 사용자 입력값을 검증하는 Validation을 구현했습니다. 오늘의 학습 목표Validation이 필요한 이유@Valid와 Bean Validation 어노테이션DTO에 검증 로직 적용검증 실패 시 에러 응답 처리 Validation을 왜 해야 할까?// 기존 코드 - 검증 없음@PostMappingpublic ResponseEntity createPost(@RequestBody PostCreateRequest request) { return ResponseEntity.ok(postService.createPost(request, userId));} 1. 잘못된 데이터가 서비스 레이어까지 도달함- 빈 문자열, null 값이 그대로 DB에 저장..
안녕하세요 .ᐟ게시판 프로젝트 4일차 입니다. 오늘은 API의 안정성을 높이는 전역 예외 처리를 구현했습니다. 오늘의 학습 목표예외 처리가 필요한 이유@RestControllerAdvice와 @ExceptionHandlerCustom Exception 설계통일된 에러 응답 구현 예외 처리를 왜 해야 할까?기존 코드의 문제점을 살펴봅시다.// 기존 코드public User findById(Long userId) { return userRepository.findById(userId) .orElseThrow(() -> new EntityNotFoundException("User not found"));} 문제점HTTP 상태 코드가 부적절함EntityNotFoundException이 발생하..
안녕하세요 .ᐟ게시판 프로젝트 3일차 입니다. (작심삼일도 여러번하면 결국엔 꾸준히 할 수 있습니다 화이팅) 오늘도 게시판의 핵심기능인 댓글과 대댓글을 구현했습니다. 오늘의 학습 목표Comment Entity 설계댓글 CRUD API 구현대댓글 계층 구조 구현 Entity 설계연관관계 매핑Comment는 세 가지 연관관계를 가집니다.Comment → Post: @ManyToOne으로 게시글과 연결Comment → User: @ManyToOne으로 작성자와 연결 Comment → Comment: Self-Referencing으로 부모-자식 관계 구현 Self-Referencing 구조대댓글 구조를 위해 같은 테이블의 다른 레코드를 참조합니다.@ManyToOne(fetch = FetchType.LA..
안녕하세요 .ᐟ오늘은 게시판 프로젝트의 핵심인 Post API 를 구현했습니다. 주요 학습 내용- 연관관계 매핑 (@ManyToOne) - 페이징 처리 (Pageable, Page) - DataInitializer를 통한 초기 데이터 자동 생성 - IntelliJ HTTP Client 활용 요구사항Post (게시글)제목, 내용, 조회수작성자와 연관관계카테고리와 연관관계CRUD페이징처리Category (카테고리)Enum (일단 NOTICE, FREE, QNA, TECH 정도만 만들었습니다.)DB에 잘못된 값이 들어가는 것을 컴파일 단계에서 방지할 수 있습니다.카테고리는 항상있어야되는데 매번 Insert 해주기가 번거로워서 알아보다가 DataInitializer 를 알게되어 바로 적용했습니다. Pos..
안녕하세요 .ᐟ앞으로 Spring Boot 를 활용한 게시판 프로젝트를 진행해보려 합니다 ~ 오늘은 환경설정부터 엔티티 설계, 회원관리 API 개발까지 진행했습니다.(몇달전에 살짝 작업하다가 다시 ...시작합니다ㅋㅋㅋ) 1. 프로젝트 환경 설정기술 스택Java 21Spring Boot 3.5.5MySQL 8.4.1Spring Data JPASpring SecurityLombok 2. Entity 설계BaseEntity - 공통 필드 추상화팀프로젝트 당시 BaseEntity를 이용해서 공통응답을 내려줬었는데, 아래와 같은 장점이 있어 이번에도 사용해보려 합니다.여러 Entity 에서 반복사용되는 필드를 한곳에 작성하고 상속받아 사용할 수 있다. (중복 관리)시간 필드들을 일관성있게 관리할 수 있다.Sof..