본문 바로가기
반응형

전체 글166

[Spring] 12주차: 설정 분리 및 비동기 처리 12주차: 설정 분리 및 비동기 처리목표: 실제 프로덕션 환경에서 애플리케이션을 안정적으로 운영하기 위한 고급 기술들을 학습합니다. 프로파일(Profile)을 사용하여 개발, 테스트, 운영 환경별로 설정을 분리하는 방법을 익히고, @Async를 활용하여 오래 걸리는 작업을 비동기적으로 처리함으로써 애플리케이션의 응답성을 향상시키는 방법을 배웁니다.1. 프로파일을 이용한 설정 분리지금까지 우리는 application.yml (또는 .properties) 파일 하나에 모든 설정을 담았습니다. 하지만 실제 애플리케이션은 여러 환경(개발, 테스트, 스테이징, 운영)에서 실행되며, 각 환경은 서로 다른 설정을 필요로 합니다.개발(local) 환경: 내 PC의 로컬 데이터베이스에 연결, H2 같은 인메모리 DB 사.. 2025. 9. 22.
[Spring] 11주차: 예외 처리 및 유효성 검사 11주차: 예외 처리 및 유효성 검사목표: 애플리케이션의 안정성과 사용자 경험을 향상시키기 위한 두 가지 중요한 기술을 배웁니다. @RestControllerAdvice를 사용하여 여러 컨트롤러에서 발생하는 예외를 한 곳에서 공통으로 처리하는 방법을 익히고, Jakarta Bean Validation(과거 JavaX Validation)을 활용하여 API 요청 데이터의 유효성을 선언적으로 검증하는 기술을 학습합니다.1. 전역 예외 처리 (Global Exception Handling)지금까지 우리는 서비스나 컨트롤러에서 예외가 발생하면, 톰캣이 제공하는 기본 오류 페이지(Whitelabel Error Page)나 알아보기 힘든 JSON 오류 응답을 받았습니다. 이는 사용자 친화적이지도 않고, 어떤 문제가.. 2025. 9. 22.
[Spring] 10주차: JWT를 이용한 API 인증 10주차: JWT를 이용한 API 인증목표: 전통적인 세션-쿠키 방식의 한계를 이해하고, 현대적인 API 서버 환경에 적합한 JWT(JSON Web Token) 기반의 인증 방식을 학습합니다. JWT의 구조와 동작 원리를 배우고, Spring Security 필터 체인에 JWT 인증 필터를 직접 구현하여 통합하는 방법을 익힙니다.1. 세션-쿠키 방식의 한계9주차에서 배운 Form Login은 Spring Security가 세션(Session) 을 사용하여 인증 상태를 유지하는 방식입니다.사용자가 로그인에 성공하면, 서버는 세션 저장소(보통 서버 메모리)에 사용자 정보를 저장하고, 세션 ID를 생성합니다.서버는 이 세션 ID를 쿠키(JSESSIONID)에 담아 클라이언트에게 응답으로 보냅니다.클라이언트는 .. 2025. 9. 22.
[Spring] 9주차: Spring Security 기본 9주차: Spring Security 기본목표: 스프링 기반 애플리케이션의 보안 표준 프레임워크인 Spring Security의 기본 개념과 아키텍처를 이해합니다. 서블릿 필터 기반의 동작 원리를 배우고, Form Login과 같은 기본적인 인증(Authentication) 및 인가(Authorization) 설정을 직접 구현하여 내 애플리케이션을 보호하는 방법을 익힙니다.1. 왜 Spring Security인가?웹 애플리케이션에서 보안(인증, 인가, 각종 공격 방어)을 직접 구현하는 것은 매우 어렵고 위험한 일입니다. Spring Security는 스프링 생태계와 완벽하게 통합되어, 이러한 보안 관련 기능들을 안정적이고 체계적으로 구현할 수 있도록 도와주는 강력한 프레임워크입니다.인증 (Authenti.. 2025. 9. 22.
[Spring] 8주차: 통합 테스트 (Integration Test) 8주차: 통합 테스트 (Integration Test)목표: 단위 테스트를 넘어, 여러 컴포넌트(컨트롤러, 서비스, 리포지토리 등)를 함께 묶어 실제 애플리케이션의 동작을 검증하는 통합 테스트 방법을 배웁니다. 스프링 부트가 제공하는 강력한 테스트 지원 기능인 @SpringBootTest와 테스트 슬라이스(@WebMvcTest, @DataJpaTest)를 활용하여 효율적인 통합 테스트를 작성하는 기술을 익힙니다.1. 통합 테스트란?통합 테스트(Integration Test) 는 단위 테스트에서 격리했던 외부 의존성(다른 클래스, 데이터베이스, 메시지 큐 등)을 실제로 연결하여, 여러 컴포넌트가 함께 동작하는 전체 흐름을 테스트하는 것입니다.단위 테스트: TodoService를 테스트하기 위해 TodoRe.. 2025. 9. 19.
[Spring] 7주차: 단위 테스트 (Unit Test) 7주차: 단위 테스트 (Unit Test)목표: 고품질의 소프트웨어를 만들기 위한 필수 역량인 테스트 코드 작성법을 배웁니다. 단위 테스트의 개념을 이해하고, JUnit5와 AssertJ를 사용하여 테스트 케이스를 작성하는 방법을 익힙니다. 또한, Mockito를 활용하여 외부 의존성을 격리하고 순수한 비즈니스 로직을 검증하는 기술을 학습합니다.1. 왜 테스트 코드를 작성해야 하는가?많은 신입 개발자들이 테스트 코드 작성을 번거롭고 부가적인 일로 생각하지만, 테스트 코드는 선택이 아닌 필수입니다. Postman으로 API를 테스트하거나, System.out.println으로 로그를 찍어보는 것도 테스트의 일종이지만, 자동화된 테스트 코드는 다음과 같은 강력한 장점을 제공합니다.품질 보증 및 버그 감소: .. 2025. 9. 19.
[Spring] 6주차: Spring Data JPA와 트랜잭션 6주차: Spring Data JPA와 트랜잭션목표: Spring Data JPA가 제공하는 강력한 기능을 통해 지루하고 반복적인 CRUD 코드를 제거하는 방법을 배웁니다. JpaRepository 인터페이스의 동작 원리를 이해하고, 쿼리 메소드와 @Query를 사용하여 원하는 데이터를 손쉽게 조회하는 기술을 익힙니다. 또한, 데이터 일관성을 보장하는 데 필수적인 트랜잭션의 개념과 @Transactional 어노테이션의 사용법을 학습합니다.1. Spring Data JPA: Repository의 마법5주차에 우리는 EntityManager를 사용하여 영속성 컨텍스트에 접근하고, em.persist(), em.find() 등의 메소드로 데이터를 관리했습니다. 하지만 이마저도 반복적인 코드 작성을 요구합니다.. 2025. 9. 19.
[Spring] 5주차: JPA와 엔티티 매핑 5주차: JPA와 엔티티 매핑목표: 자바 진영의 표준 ORM(Object-Relational Mapping) 기술인 JPA의 기본 개념을 이해합니다. 객체(Entity)를 관계형 데이터베이스의 테이블에 어떻게 매핑하는지 배우고, 영속성 컨텍스트의 동작 원리를 통해 JPA가 어떻게 데이터베이스 작업을 처리하는지 학습합니다.1. ORM과 JPA, 그리고 Hibernate1.1 JDBC의 한계와 ORM의 등장전통적인 JDBC(Java Database Connectivity) 방식은 개발자가 직접 SQL 쿼리를 작성하고, ResultSet을 받아 일일이 자바 객체에 매핑해주어야 했습니다.// JDBC 예시String sql = "SELECT id, name, email FROM member WHERE id = .. 2025. 9. 19.
반응형