public void static main/Book

[토비의스프링] 9장-스프링 프로젝트 시작하기

햄리뮤 2025. 2. 28. 21:35
반응형

 

 

1. 스프링의 기본 특징

  • 플랫폼 호환성: 스프링은 다양한 플랫폼에서 사용 가능하지만, **자바 엔터프라이즈 플랫폼(Java EE)**에 최적화되어 있습니다.
  • 주요 사용 사례:
    • 웹 클라이언트: HTTP를 통해 접근하는 웹 애플리케이션.
    • 백엔드 DB 연동: 데이터베이스와 상호작용하는 애플리케이션에 적합.
  • 핵심 목표: 의존성 주입(Dependency Injection)과 제어의 역전(Inversion of Control, IoC)을 통해 유연하고 확장 가능한 애플리케이션 개발 지원.

2. 스프링 개발 생산성과 품질 향상을 위한 도구

  • 필요성: 스프링 개발의 생산성과 품질을 높이기 위해서는 적절한 도구가 필수적.
  • 권장 도구:
    • SpringIDE 플러그인: Eclipse 같은 IDE에 통합 가능한 플러그인으로 스프링 설정 및 빈(Bean) 관리 용이.
    • Spring Tool Suite (STS): 스프링 전용 IDE로, 스프링 프로젝트 생성, 디버깅, 설정 자동화 등을 지원.
  • 효과: 코드 작성 속도 향상, 설정 오류 감소, 개발자 경험 개선.

3. 의존성 관리

  • 특징: 스프링은 방대한 의존 라이브러리를 사용하므로 라이브러리와 의존관계 관리에 신경 써야 함.
  • 문제점: 수동 관리 시 버전 충돌, 누락 등의 위험이 있음.
  • 해결책: 빌드 툴 사용 권장.
    • Maven: 의존성 선언을 XML 기반으로 관리하며, 스프링이 제공하는 의존관계 정보 활용 가능.
    • Ivy: Apache의 경량화된 의존성 관리 도구로 유사 기능 제공.
  • 장점: 의존성 자동 해결, 프로젝트 빌드 간소화, 유지보수 용이.

4. 스프링 애플리케이션의 아키텍처

4.1. 계층형 아키텍처(Layered Architecture)

  • 기본 구조: 역할에 따라 3계층으로 나뉨.
    1. 프레젠테이션 계층 (Presentation Layer): 사용자 인터페이스(웹 클라이언트) 처리.
    2. 비즈니스 계층 (Business Layer): 애플리케이션 로직 처리.
    3. 데이터 접근 계층 (Data Access Layer): DB와의 상호작용 담당.
  • 세분화: 기술의 추상도에 따라 더 세부적으로 나눌 수 있음(예: 서비스, 리포지토리 등).

4.2. 정보 관점에서의 아키텍처 분류

  • 데이터 중심 아키텍처: 데이터베이스 구조와 흐름에 초점을 맞춘 설계.
  • 오브젝트 중심 아키텍처: 객체지향 원칙(캡슐화, 상속, 다형성 등)을 기반으로 설계.
  • 스프링과의 적합성: 오브젝트 중심 아키텍처가 스프링과 가장 잘 맞음.
    • 이유: 스프링의 IoC와 DI가 객체 간 관계를 유연하게 관리하기 때문.

5. 서드파티 기술과의 통합

  • 문제: 스프링은 모든 기술을 직접 지원하지 않음.
  • 해결책: 서드파티 기술을 스프링 스타일로 통합.
    • 스프링 스타일이란?: 의존성 주입, 빈 관리, 설정 분리 등 스프링의 철학을 따르는 방식.
  • 예시:
    • Hibernate(ORM) 사용 시 스프링의 @Repository와 통합.
    • 외부 API 사용 시 스프링의 @Bean으로 관리.
  • 장점: 일관성 있는 코드 스타일 유지, 스프링 생태계와의 호환성 강화.

6. 핵심 개념 요약

플랫폼 자바 EE에 최적화, HTTP 웹 + DB 애플리케이션에 강점
도구 SpringIDE, STS로 생산성 향상
의존성 관리 Maven, Ivy로 의존 라이브러리 자동화
아키텍처 3계층(프레젠테이션, 비즈니스, 데이터), 오브젝트 중심 선호
서드파티 통합 스프링 스타일로 접근 방식 일관성 유지

 

 

반응형