본문 바로가기
public void static main/Book

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

by 햄리뮤 2025. 2. 28.
반응형

 

 

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계층(프레젠테이션, 비즈니스, 데이터), 오브젝트 중심 선호
서드파티 통합 스프링 스타일로 접근 방식 일관성 유지

 

 

반응형

댓글