개발 공부/Spring

[Spring] 스프링 프레임워크

sngynhy 2021. 9. 27. 11:25

프레임워크란?

소프트웨어적 의미로 개발하고자 하는 애플리케이션의 전반적인 구조나 코드를 제공해주는 것.

개발 시 필요한 기능을 미리 클래스나 인터페이스 등으로 만들어 제공하고,

개발자는 정해진 틀 안에서 자신의 상황에 맞게 변형 및 추가하여 이를 사용한다.

그러면 처음부터 개발할 필요 없이 자신이 원하는 애플리케이션을 짧은 시간에 만들 수 있고,

일정한 틀 속에서 개발을 하기 때문에 개발 후 유지보수 과정에서 일관성이 망가지는 것을 방지할 수 있다.

프레임워크의 장점

  • 유지보수에 들어가는 비용이 절감
  • 유지보수 과정에서 아키텍처(구조, 골격)의 변형이 발생하지 않음 -> 일관성 유지
  • 개발자는 비즈니스 로직만 구현하면 됨 -> 개발하는데 걸리는 시간 단축
  • 개발자의 역량 획일화

스프링 프레임워크

자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크

스프링 프레임워크의 특징

"IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크"

  • POJO(Plain Old Java Object)를 사용하여 비교적 간단하게 구현 가능
  • 객체의 생성 및 객체 관리(라이프사이클)를 담당하는 컨테이너 역할 수행
  • 제어 역행(IoC, Inversion of Control) 기술을 이용해 애플리케이션 간의 느슨한 결합을 제어
    • 제어 역행 : 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행하는 방법
  • 의존성 주입(DI, Dependency Injection) 기능 지원
    • 의존성 주입 : 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성하여 사용하는 방법
  • 관점 지향(AOP, Aspect-Oriented Programming) 기능을 이용하여 자원 관리
    • 관점 지향 : 핵심 기능 외 부수 기능들을 분리 구현함으로써 모듈성을 증가시키는 방법
  • 영속성과 관련된 다양한 서비스 지원
  • 수많은 라이브러리 또는 다른 프레임워크와의 연동 기능 지원

스프링에서 제공하는 주요 기능

스프링 기능 설명
Core 다른 기능과 설정을 분리하기 위한 IoC 기능 제공
Context 스프링의 기본 기능으로서 애플리케이션의 각 기능을 하는 빈(Bean)에 대한 접근 방법 제공
DAO JDBC 기능을 좀 더 편리하게 사용할 수 있도록 해줌
ORM 하이버네이트나 마이바티스 같은 영속성 관련 프레임워크와 연동된 기능 제공
AOP 관점 지향 기능 제공
Web 웹 애플리케이션 개발에 필요한 기능 제공
WebMVC 스프링에서 MVC 구현에 관련된 기능을 제공