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
- Given: 테스트를 위한 환경 설정
- When: 테스트 대상 메서드 실행
- 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 → 원격 배포