2025-11-04

오늘 배운 것

Spring Framework & Tooling Summary

1. Framework 기본 개념

  • Framework는 비즈니스 로직이 빠진 뼈대만 갖춘 반제품 형태의 애플리케이션.
  • SW Framework: 공통 기능을 제공하여 개발자는 핵심 로직에 집중할 수 있게 함.

2. Spring Framework

  • 자바 애플리케이션 개발을 위한 경량 프레임워크.
  • 개발자는 비즈니스 로직에 집중하고, 스프링은 공통적인 기술 구현(JDBC, 트랜잭션 등)을 담당.

주요 특징

(1) POJO 기반

  • 특정 상속이나 인터페이스 구현이 필요 없는 순수한 자바 객체 기반.
  • 유지보수성, 테스트 용이성, 생산성이 높음.

(2) DI (Dependency Injection)

  • 의존성 주입으로 객체 간 결합도를 낮춤.
  • 변경에 유연하며 코드 유지보수가 쉬움.

(3) AOP (Aspect-Oriented Programming)

  • 로깅, 보안 등 횡단 관심사를 핵심 로직과 분리.
  • 공통 로직을 모듈화하여 재사용성 및 가독성 향상.

(4) PSA (Portable Service Abstraction)

  • 서비스 구현 방식을 추상화하여 환경에 의존하지 않음.
  • 예: JPA나 MyBatis를 사용해도 동일한 트랜잭션 처리 코드 가능.

3. Spring Boot

  • 스프링의 설정을 간소화한 자동 설정 템플릿.
  • 내장 Tomcat, 자동 설정, 의존성 관리 등으로 개발 생산성 극대화.
  • 비즈니스 로직 집중 및 테스트 강화에 유리.

4. Logging (SLF4J & Logback)

필요성

  • 시스템 상태 추적, 에러 분석, 성능 모니터링을 위해 필수.

SLF4J(Simple Logging Facade for Java)

  • 로깅 라이브러리의 추상화 계층(Facade Pattern).
  • Logback, Log4j 등 다양한 구현체 사용 가능.

로그 레벨

  • trace < debug < info < warn < error
  • 개발 환경: trace 이상

    운영 환경: info 이상 출력 권장.

Logback 설정

  • 기본 구현체로 사용됨.
  • logback.xml을 통해 출력 형식, Appender, 파일 로그 관리 등 설정.

5. JUnit

개요

  • Java 단위 테스트 자동화 프레임워크.
  • 코드 변경 시 안정성 검증 가능.

기본 어노테이션

  • @BeforeAll, @BeforeEach, @Test, @AfterEach, @AfterAll

Assertion

  • 테스트 결과가 예상과 일치하는지 검증.
  • assertEquals, assertNotNull, assertThrows 등 제공.

BDD 스타일: Given-When-Then

  1. Given: 테스트를 위한 환경 설정
  2. When: 테스트 대상 메서드 실행
  3. Then: 결과 검증 (Assertion)

F.I.R.S.T 원칙

  • Fast: 빠르고 독립적으로 실행
  • Independent: 테스트 간 상태 의존 금지
  • Repeatable: 반복 실행 시 동일 결과
  • Self-validating: Assert로 자동 검증
  • Timely: 개발 초기에 테스트 작성 권장

6. Maven

개념

  • Apache 관리의 빌드 및 프로젝트 관리 도구
  • pom.xml로 프로젝트 구성, 의존성, 빌드 설정 관리.

특징

  • 표준 디렉토리 구조 강제
  • 중앙 저장소를 통한 의존성 관리
  • 빌드 생명주기 표준화 (clean, build, site)

주요 속성

  • groupId: 조직 식별자
  • artifactId: 프로젝트 이름
  • version: 버전 정보
  • dependencies: 의존 라이브러리 관리

Scope

  • compile: 기본, 컴파일/실행 모두 포함
  • provided: 실행 시 외부 환경이 제공 (ex. Tomcat)
  • runtime: 실행 시만 필요 (ex. JDBC Driver)
  • test: 테스트 전용
  • system: 로컬 jar 직접 지정

Life Cycle

  • clean → 이전 빌드 제거
  • compile → 소스 컴파일
  • test → 단위 테스트
  • package → jar/war 생성
  • install → 로컬 저장소에 설치
  • deploy → 원격 배포

results matching ""

    No results matching ""