Devin.KR

Java 앱과 실행 환경 연결

같은 계약을 Java 17 앱에 옮기고 빌드와 의존성을 확인합니다.

진도 0%

레슨

  1. Python 모델을 Java로 옮기기

    Java 메서드와 조건문으로 제목 검증을 옮겨 같은 사례를 비교합니다.

  2. 객체와 컬렉션의 상태

    Task와 저장소를 분리하고 목록 반환이 내부 상태를 바꾸지 않게 구현합니다.

  3. 빌드와 외부 의존성

    JDK 17과 Spring Boot 3.1.x 시작 프로젝트의 pom.xml과 실제 사용 API를 확인합니다.

  4. JUnit으로 계약 확인

    명세 사례를 JUnit 5 테스트로 옮기고 구현과 별도로 기대 결과를 고정합니다.

Java 앱과 실행 환경 연결 미션

m02-code-reading 미션 solution의 spec.md·cases.json·reference.py·Python 테스트와 문서 검사기를 그대로 이어받고 Java TaskService, 메모리 저장소, JUnit 검사 및 JAVA-PORT.md를 추가합니다. HTTP는 다음 모듈에서 연결합니다.

요구사항

  • Python 참조 모델의 계약을 Java TaskService에 옮깁니다.
  • JDK 17·Spring Boot 3.1.5와 저장소의 Maven Wrapper를 사용하며 직접 의존성의 API·scope 대응을 기록합니다.
  • 캐시 준비 절차와 오프라인 실행 방법을 README에 작성합니다.
  • TitlePolicy와 불변 Task, 독립된 목록 스냅샷을 쓰는 TaskRepository 및 TaskService를 구현합니다. 제목은 Python strip 공백 집합과 코드 포인트 1~40을 유지합니다.
  • apply는 ok와 task/tasks 또는 error를 반환하고 snapshot은 전체 상태를 관찰하게 합니다. boolean·실수·문자열 id는 INVALID_ID, 거대한 양의 정수 id는 NOT_FOUND입니다. 재완료는 성공이며 실패가 다음 번호를 소비하지 않습니다.
  • JAVA-PORT.md의 함수 대응과 상태 소유권을 코드와 대조하고 evidence-java.md에 본인 판단·AI에 맡긴 일·실제 명령·테스트 수·검증 범위와 미확인을 기록합니다.

완료 기준

  • 학습자는 ./mvnw test로 검사합니다. 준비된 캐시에서는 ./mvnw -o -q test로 같은 테스트를 수행하고 성공 시 종료 코드 0을 확인합니다.
  • 사전 준비된 Maven 캐시에서 오프라인 단위 테스트가 통과합니다.
  • 잘못된 입력으로 저장소가 바뀌지 않고 반환 목록 변경이 내부 상태에 영향을 주지 않습니다.
  • Java JUnit 테스트 27개가 실패·오류·건너뜀 없이 통과합니다. ContractCasesTest는 C01~C12 각각의 결과·전체 상태·초기 상태 및 명령 불변을 검사합니다.
  • 추가 검사는 1·40·41 코드 포인트와 이모지·Python 공백, 실패 후 번호, 조회 스냅샷, 완료 및 재완료, 잘못된 id·거대한 정수와 응답 맵 수정의 독립성을 검사합니다.
  • 기존 bash check.sh는 문서·Python 참조 모델만 검사합니다. Java 증거는 Maven 실행으로 별도 기록하며 HTTP·DB·동시 요청·운영 배포는 검증하지 않습니다.
  • JAVA-PORT.md와 evidence-java.md의 설명 의미 및 의존성 판단은 사람이 확인합니다. JUnit은 문서 설명의 의미를 자동 판정하지 않습니다.
./mvnw test
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 요구사항과 실제 검증 근거를 연결해 설명합니다.
  • 본인이 판단한 사항과 AI에 맡긴 사항을 구분합니다.
  • 통과·실패·미확인 상태를 사실대로 기록합니다.