[Day 24 | Spring] Spring 프레임워크 들어가기

y♡ding·2024년 11월 14일
0

데브코스 TIL

목록 보기
150/163

Spring Framework는 Java 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로, 개발자가 대규모 엔터프라이즈 애플리케이션을 효율적으로 개발할 수 있도록 다양한 기능을 제공합니다. IoC(Inversion of Control)와 DI(Dependency Injection) 같은 핵심 개념을 기반으로 하여, 복잡한 Java 애플리케이션의 설계와 구성을 간결하게 만들고, 유지보수성을 높이는 데 도움을 줍니다.

Spring은 웹 애플리케이션, 데이터베이스 연동, 보안, 배치 작업, 클라우드와의 연동 등 다양한 모듈을 제공하며, 특히 Spring Boot의 등장으로 빠르게 애플리케이션을 시작할 수 있는 표준이 되었습니다.


Spring Framework 개요

  1. Spring Framework란?
    • Java 플랫폼을 위한 오픈 소스 경량 애플리케이션 프레임워크로, 엔터프라이즈급 애플리케이션 개발을 더 쉽고 빠르게 할 수 있도록 돕습니다.
    • 다양한 모듈을 통해 IoC (제어의 역전), DI (의존성 주입), AOP (관점 지향 프로그래밍), MVC (모델-뷰-컨트롤러) 패턴을 지원합니다.
  2. Spring Framework의 주요 특징
    • 경량 컨테이너: 객체의 생성과 소멸을 포함한 생명 주기를 관리합니다.
    • DI 지원: 외부에서 두 객체 간의 관계를 결정하여 결합도를 낮춥니다.
    • AOP 지원: 비즈니스 로직과 공통 관심 사항(로깅, 보안 등)을 분리하여 재사용성을 높입니다.
    • POJO 지원: 특정 인터페이스나 상속이 필요 없는 일반 자바 객체를 지원하여 유연성을 제공합니다.
    • 트랜잭션 관리: 일관된 방법으로 트랜잭션을 처리할 수 있습니다.
    • 데이터 영속성 지원: 다양한 데이터베이스 접근 기술(JPA, Hibernate, JDBC)과 쉽게 연동됩니다.
    • API 연동: JMS, 메일, 스케줄링 등 엔터프라이즈 기능을 쉽게 통합합니다.
  3. Spring MVC
    • MVC 패턴을 기반으로 웹 애플리케이션을 설계할 수 있도록 지원합니다. 클라이언트의 요청을 Controller에서 받아 Model을 통해 비즈니스 로직을 처리하고, 최종 결과를 View로 출력합니다.

Spring의 핵심 개념

  1. IoC (Inversion of Control) - 제어의 역전
    • IoC는 객체의 생성과 관리 권한을 개발자가 아닌 프레임워크가 맡는 것을 의미합니다. 이를 통해 개발자는 객체 간의 의존성을 직접 설정할 필요 없이, Spring이 이를 관리하도록 맡길 수 있습니다.
    • Spring에서는 주로 XML 설정 파일이나 애너테이션을 사용하여 객체의 생성과 의존성 주입을 제어합니다.
  2. DI (Dependency Injection) - 의존성 주입
    • DI는 객체가 다른 객체와의 의존성을 가지는 경우, 필요한 의존성을 외부에서 주입받도록 하는 방식입니다. 이를 통해 객체 간의 결합도를 낮추고, 코드의 재사용성과 유지보수성을 높일 수 있습니다.
    • Spring은 필드 주입, 생성자 주입, 세터 주입 등 다양한 DI 방식을 지원합니다.
  3. AOP (Aspect-Oriented Programming) - 관점 지향 프로그래밍
    • AOP는 애플리케이션의 핵심 비즈니스 로직과 부가적인 기능(예: 로깅, 트랜잭션 관리)을 분리하는 데 사용됩니다.
    • Spring AOP를 통해 트랜잭션 관리나 보안 등의 기능을 코드에 직접 작성하지 않고, 특정 관심사(Aspect)로 분리하여 관리할 수 있습니다.
  4. MVC (Model-View-Controller) 패턴
    • Spring은 웹 애플리케이션을 구축하기 위해 Spring MVC 모듈을 제공합니다. 이는 모델, 뷰, 컨트롤러를 분리하여 클라이언트 요청을 효과적으로 처리하고 응답을 생성할 수 있도록 설계되었습니다.
    • Spring MVC를 사용하면 클라이언트 요청을 컨트롤러에서 받아, 비즈니스 로직을 처리한 후 적절한 뷰로 데이터를 전달하는 구조를 쉽게 구현할 수 있습니다.

Spring의 주요 모듈

Spring은 다양한 모듈로 구성되어 있으며, 각 모듈은 특정 기능을 제공하여 전체 애플리케이션의 효율성과 생산성을 높입니다.

  1. Spring Core:
    • Spring의 기본적인 DI와 IoC 기능을 제공하는 모듈로, Spring Framework의 근간이 됩니다. 모든 Spring 애플리케이션은 이 Core 모듈을 사용하여 객체 생성과 의존성 관리를 수행합니다.
  2. Spring AOP:
    • AOP(Aspect-Oriented Programming) 기능을 제공하여, 비즈니스 로직에 영향을 주지 않고 로깅, 보안, 트랜잭션 관리와 같은 부가 기능을 구현할 수 있습니다.
  3. Spring MVC:
    • 웹 애플리케이션을 위한 MVC 패턴을 구현한 모듈로, RESTful 웹 서비스 개발에도 많이 사용됩니다. 클라이언트의 요청을 컨트롤러가 처리하고, 필요한 뷰를 생성하는 구조를 지원합니다.
  4. Spring Data:
    • 데이터베이스와의 연동을 쉽게 하기 위한 모듈로, JPA, MongoDB, Redis 등의 데이터베이스를 다루는 기능을 제공합니다. 개발자는 직접 쿼리를 작성하지 않고도 데이터를 CRUD(Create, Read, Update, Delete)할 수 있습니다.
  5. Spring Security:
    • 인증과 인가 기능을 제공하는 보안 모듈로, 사용자 인증, 권한 관리, 접근 제어 등을 제공합니다. 이를 통해 안전한 애플리케이션을 구축할 수 있습니다.
  6. Spring Boot:
    • Spring Boot는 Spring Framework를 쉽게 시작할 수 있도록 돕는 모듈입니다. 자동 설정 기능을 제공하여, 최소한의 설정으로 애플리케이션을 빠르게 개발할 수 있습니다. 개발자가 더 이상 복잡한 XML 설정을 작성할 필요 없이, 기본 설정으로 시작할 수 있습니다.
  7. Spring Cloud:
    • 클라우드 환경에서 마이크로서비스를 개발할 수 있도록 지원하는 모듈입니다. 마이크로서비스의 구성, 로드 밸런싱, 분산 트랜잭션 등을 관리하기 쉽게 합니다.

Spring을 사용한 애플리케이션 개발 흐름

  1. 객체 간의 의존성 설정 (IoC와 DI)
    • Spring을 통해 애플리케이션에 필요한 객체 간의 의존성을 설정합니다. XML 또는 애너테이션을 통해 객체 간의 관계를 정의하고, Spring이 이를 관리하게 합니다.
  2. 컨트롤러 작성 (Spring MVC)
    • Spring MVC를 사용하여 클라이언트 요청을 처리할 컨트롤러 클래스를 작성합니다. 각 컨트롤러는 URL 매핑을 통해 클라이언트의 요청을 특정 메서드로 연결하며, 요청을 처리한 후 적절한 뷰로 응답을 보냅니다.
  3. 비즈니스 로직 구현 (Service 계층)
    • 비즈니스 로직을 서비스 계층에 작성하여, 컨트롤러와 분리합니다. 서비스 계층에서는 주로 DAO(Data Access Object)와 협력하여 데이터베이스와의 상호작용을 처리합니다.
  4. 데이터 처리 (Spring Data)
    • Spring Data JPA를 사용하여 데이터베이스와 상호작용합니다. Spring Data는 CRUD 작업을 추상화하여, 데이터베이스와의 작업을 더 쉽게 수행할 수 있도록 돕습니다.
  5. 보안 설정 (Spring Security)
    • Spring Security를 사용하여 애플리케이션의 보안을 설정합니다. 권한별 접근 제어를 설정하거나, 인증 절차를 구성하여 애플리케이션을 보호할 수 있습니다.

Spring의 장점

  1. 의존성 관리의 용이성: IoC와 DI를 통해 객체 간의 결합도를 낮춰 유연하고 확장성 있는 애플리케이션을 개발할 수 있습니다.
  2. 모듈화된 구조: Spring은 필요한 모듈만 선택적으로 사용하여, 애플리케이션에 필요한 기능만을 구현할 수 있게 합니다.
  3. 확장성과 유지보수성: Spring은 구조가 일관되어 있어 유지보수가 쉽고, 모듈 확장이 용이하여 대규모 애플리케이션에 적합합니다.
  4. 방대한 커뮤니티와 지원: Spring은 방대한 사용자 커뮤니티와 풍부한 문서가 있어 학습과 문제 해결이 비교적 쉽습니다.
  5. Spring Boot로 간편한 설정: Spring Boot는 자동 설정 기능을 통해 빠르게 애플리케이션을 개발할 수 있도록 지원하며, 특히 간단한 웹 애플리케이션 개발에 유리합니다.

📚 자료 및 링크

Spring

Spring Framework

Spring Documentation - Core Concepts
표준프레임워크 포털 eGovFrame

0개의 댓글

관련 채용 정보