개발 공부/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 구현에 관련된 기능을 제공 |