Skip to content

4단계 – 프레임워크와 웹 애플리케이션 (3~4개월)

Spring Boot, Spring Core, Spring Data JPA

  • Spring Core: Dependency Injection (@Bean, @Autowired), IoC Container.
  • Spring Boot: Auto-Configuration, Starters (spring-boot-starter-web, spring-boot-starter-data-jpa), application.yml.
  • Spring Data JPA: Repositories (CrudRepository, JpaRepository), @Query를 사용한 쿼리, 페이지네이션.
  • 예제: 태스크 앱에서 태스크를 관리하기 위한 REST endpoints 생성 (CRUD).

Spring Security (JWT, OAuth2)

  • 개념: Authentication, Authorization, Security Filters.
  • JWT: 토큰 생성 및 검증, JwtAuthenticationFilter 사용.
  • OAuth2: Resource Server 설정, 공급자(예: Google)와 통합.
  • 예제: JWT와 롤(ADMIN, USER)로 태스크 endpoints 보호.

유닛 및 통합 테스트

  • Unit Tests: JUnit 5, Mockito (@Mock, @InjectMocks), 비즈니스 로직 테스트.
  • Integration Tests: @SpringBootTest, @WebMvcTest, 테스트용 H2 데이터베이스.
  • Testcontainers: Docker 컨테이너에서 PostgreSQL로 테스트.
  • 예제: 태스크 앱의 서비스와 endpoints 테스트.

RESTful APIs와 Swagger를 사용한 문서화

  • REST: HTTP 메서드, 상태 코드, RESTful 원칙.
  • Spring REST: @RestController, @RequestMapping, @PathVariable.
  • Swagger: springdoc-openapi 설정, @Operation으로 주석 추가.
  • 예제: Swagger UI로 태스크 앱 endpoints 문서화.

GraphQL 소개

  • 개념: Queries, Mutations, Schema.
  • Spring Boot with GraphQL: spring-boot-starter-graphql로 설정.
  • 예제: 상태별 태스크를 나열하는 GraphQL Query 생성.

기본 프론트엔드 통합

  • Thymeleaf: Spring Boot로 HTML 페이지를 렌더링하는 템플릿.
  • 예제: 태스크를 보고 생성하는 간단한 웹 인터페이스 생성.

빌드 도구: Maven과 Gradle

  • Maven: pom.xml 구조, 의존성, 플러그인.
  • Gradle: build.gradle 파일, 태스크, 의존성 관리.
  • 예제: Maven과 Gradle로 태스크 앱 설정.

프로젝트 배포

  • 플랫폼: Railway, Heroku, AWS (Elastic Beanstalk).
  • 단계: JAR로 패키징, GitHub Actions로 CI/CD 설정.
  • 예제: PostgreSQL을 사용하여 Railway에 태스크 앱 배포.

최종 프로젝트

태스크 관리 시스템
- 데이터베이스: Task (제목, 설명, 상태) 및 User 테이블 (1:N 관계).
- Java: Spring Boot, Spring Data JPA를 사용한 REST API로 CRUD.
- 보안: JWT Authentication, 롤(ADMIN, USER).
- 테스트: 유닛 테스트(서비스) 및 통합 테스트(Testcontainers를 사용한 endpoints).
- 문서화: endpoints 설명이 포함된 Swagger UI.
- 선택 사항: 태스크 나열을 위한 GraphQL Query와 상호작용을 위한 Thymeleaf 인터페이스 추가.
- Git: 기능별 commit (예: feature/rest-api, feature/security).
- 공개: GitHub에 README(설정, endpoints, 배포)와 함께 공개.

리소스