개발 문서/Java

Spring Framework 소개와 기본 개념

copg 2023. 11. 12. 00:01
728x90
반응형

Spring Framework는 자바 기반의 엔터프라이즈 애플리케이션을 개발하기 위한 종합적인 인프라를 제공하는 경량화된 오픈 소스 프레임워크입니다. Spring은 여러 모듈로 구성되어 있어 각각의 모듈을 선택적으로 사용할 수 있습니다. 주요 특징은 다음과 같습니다.

주요 특징:

  1. 경량화 (Lightweight):
    • Spring은 가볍고 최소한의 설정으로 개발을 가능케 하는 경량화된 프레임워크입니다.
  2. 제어의 역전 (IoC - Inversion of Control):
    • 객체의 생성과 관리를 개발자가 아닌 프레임워크가 담당하는 제어의 역전 개념을 도입하여 객체 간의 결합도를 낮추고 모듈화를 촉진합니다.
  3. 의존성 주입 (Dependency Injection):
    • IoC의 구현 방식 중 하나로, 객체가 직접 의존하는 객체를 생성하지 않고 외부에서 주입받는 방식을 제공하여 유연한 구조를 제공합니다.
  4. AOP (Aspect-Oriented Programming):
    • 관점 지향 프로그래밍을 지원하여 핵심 비즈니스 로직과 각 로직에 공통으로 적용되는 부가적인 기능을 분리하여 관리할 수 있습니다.
  5. 트랜잭션 관리 (Declarative Transaction Management):
    • 선언적인 방식으로 트랜잭션을 관리할 수 있어 코드에서 직접 트랜잭션을 처리할 필요가 없습니다.
  6. MVC 웹 프레임워크:
    • 웹 애플리케이션의 개발을 위한 강력한 MVC 패턴을 제공하여 모델, 뷰, 컨트롤러의 분리된 개발을 가능케 합니다.

주요 모듈:

  1. Spring Core Container:
    • IoC와 DI를 제공하는 핵심 컨테이너. ApplicationContext 인터페이스를 기반으로 하는 컨테이너가 포함됩니다.
  2. Spring AOP:
    • 관점 지향 프로그래밍을 구현하는 모듈. 트랜잭션 관리, 보안, 로깅 등 다양한 관심사(Aspect)를 구현할 수 있습니다.
  3. Spring JDBC:
    • JDBC 작업을 간소화하고 선언적 트랜잭션 관리를 제공하는 모듈입니다.
  4. Spring ORM:
    • 다양한 ORM 프레임워크를 지원하며, Hibernate, JPA 등과의 통합을 지원합니다.
  5. Spring MVC:
    • 웹 애플리케이션의 모델-뷰-컨트롤러 아키텍처를 제공하는 웹 프레임워크.

기본 개념:

  1. Bean:
    • Spring에서 관리되는 객체를 나타냅니다. ApplicationContext가 이를 생성, 관리하며, DI를 통해 의존성을 주입합니다.
  2. ApplicationContext:
    • IoC의 핵심 컨테이너로서, Bean의 생성, 관리, DI를 담당합니다.
  3. Dependency Injection (의존성 주입):
    • 객체 간의 의존 관계를 설정 파일(XML 또는 어노테이션)이나 Java 코드를 통해 주입하는 것을 의미합니다.
  4. Aspect:
    • AOP에서 핵심 로직에 적용되는 부가적인 기능을 정의한 모듈입니다.
  5. Advice:
    • Aspect에서 적용되는 실제 기능을 나타냅니다. @Before, @After, `@Around` 등이 해당합니다.
  6. Pointcut:
    • 어떤 메소드에 어떤 Advice를 적용할지를 정의한 표현식입니다.
  7. MVC (Model-View-Controller):
    • 웹 애플리케이션을 개발하기 위한 아키텍처 패턴으로, 모델(데이터), 뷰(사용자 인터페이스), 컨트롤러(비즈니스 로직과 사용자 입력 처리)로 구분합니다.

Spring Framework는 유연하고 확장 가능한 구조를 가지고 있어서, 다양한 유형의 애플리케이션 개발에 사용됩니다.