## Spring 프레임워크 기반 백엔드 개발 과정에서 AI에게 질문해야 할 내용 (실제 예시)
**1. 프로젝트 설정:**
* **Spring Boot 버전 선택:** "현재 프로젝트에 가장 적합한 Spring Boot 버전은 무엇인가요? 최신 버전의 장점과 단점은 무엇이며, 이전 버전과의 호환성은 어떤가요?"
* **의존성 관리:** "프로젝트에 필요한 Spring 모듈과 외부 라이브러리는 무엇인가요? 각 의존성의 역할과 기능을 설명해주세요. 의존성 충돌이 발생하면 어떻게 해결해야 하나요?"
**2. 컨트롤러 개발:**
* **REST API 설계:** "REST API 설계 원칙을 준수하여 `/users` 엔드포인트를 설계하려면 어떻게 해야 하나요? HTTP 메서드(GET, POST, PUT, DELETE)는 어떻게 사용해야 하며, 요청 및 응답 데이터 형식은 어떻게 정의해야 하나요?"
* **요청 데이터 검증:** "사용자 등록 요청 시 이름, 이메일, 비밀번호 등 필수 입력값을 검증하려면 어떤 Bean Validation 어노테이션을 사용해야 하나요? 커스텀 검증 로직은 어떻게 구현해야 하나요?"
* **예외 처리:** "사용자 정보를 조회할 때 발생할 수 있는 예외(예: 사용자를 찾을 수 없음)를 처리하고 적절한 HTTP 상태 코드와 에러 메시지를 반환하려면 어떻게 해야 하나요?"
**3. 서비스 개발:**
* **비즈니스 로직 구현:** "상품 주문 처리 로직을 구현하려면 어떤 단계를 거쳐야 하나요? 주문 정보 저장, 재고 확인, 결제 처리 등 각 단계별로 고려해야 할 사항은 무엇인가요?"
* **트랜잭션 관리:** "여러 데이터베이스 작업을 하나의 트랜잭션으로 묶어 처리하려면 어떻게 해야 하나요? `@Transactional` 어노테이션을 사용하는 방법과 주의사항은 무엇인가요?"
**4. 레포지토리 개발:**
* **Spring Data JPA 활용:** "Spring Data JPA를 사용하여 사용자 정보를 조회하는 쿼리를 작성하려면 어떻게 해야 하나요? 특정 조건에 맞는 사용자를 검색하거나, 페이징 처리를 적용하려면 어떻게 해야 하나요?"
* **커스텀 쿼리 작성:** "Spring Data JPA에서 제공하는 메서드 외에 복잡한 쿼리를 작성해야 할 때는 어떻게 해야 하나요? `@Query` 어노테이션이나 QueryDSL을 사용하는 방법을 설명해주세요."
**5. 데이터 모델 개발:**
* **엔티티 관계 설정:** "사용자와 주문 간의 관계를 데이터베이스에 모델링하려면 어떤 JPA 어노테이션을 사용해야 하나요? 1:N 관계, N:M 관계 등 다양한 관계 유형에 따른 엔티티 설계 방법을 설명해주세요."
* **JPA Auditing:** "엔티티의 생성 및 수정 시간을 자동으로 기록하려면 어떻게 해야 하나요? `@CreatedDate`, `@LastModifiedDate` 어노테이션을 사용하는 방법과 주의사항은 무엇인가요?"
**6. 테스트 및 디버깅:**
* **단위 테스트:** "컨트롤러의 특정 메서드를 테스트하려면 어떻게 해야 하나요? MockMvc를 사용하여 HTTP 요청을 시뮬레이션하고 응답을 검증하는 방법을 설명해주세요."
* **통합 테스트:** "데이터베이스 연동까지 포함하여 전체 애플리케이션 흐름을 테스트하려면 어떻게 해야 하나요? `@SpringBootTest` 어노테이션을 사용하고 테스트용 데이터베이스를 설정하는 방법을 알려주세요."
**7. 빌드 및 배포:**
* **Gradle/Maven 빌드:** "Gradle 또는 Maven을 사용하여 Spring Boot 애플리케이션을 빌드하고 실행 가능한 JAR 파일을 생성하는 방법은 무엇인가요? 빌드 설정 파일을 작성하고 명령어를 실행하는 방법을 자세히 설명해주세요."
* **웹 서버 배포:** "빌드된 JAR 파일을 톰캣, Jetty 등 웹 서버에 배포하는 방법은 무엇인가요? 각 웹 서버의 특징과 설정 방법을 비교 설명해주세요."
* **CI/CD 설정:** "Jenkins, GitLab CI/CD, GitHub Actions 등 CI/CD 도구를 사용하여 Spring Boot 애플리케이션의 빌드 및 배포를 자동화하는 방법은 무엇인가요? 각 도구의 장단점과 설정 방법을 알려주세요."
댓글 0