반응형
스프링을 이용한 웹 개발을 공부하기에 앞서 먼저 스프링에 대해서 공부 및 정리해보려고 한다.
스프링의 정의는 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크이다. 따라서 스프링 프레임워크(Spring Framework)가 더 정확한 표현이다.
스프링의 주요 특징은 다음과 같다.
- 경량 컨테이너로서 자바 객체를 직접 관리, 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하여 스프링부터 필요한 객체를 얻어 올 수 있다.
- 영속성과 관련된 다양한 서비스를 지원. IBATIS, Hibernate 등 이미 완성도가 놓은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
- 확장성이 높음. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.
POJO(Plain Old Java Object)
- 별도의 API를 사용하지 않는 setter, getter 메서드로 이루어진 단순한 자바 오브젝트
- 순수한 자바 오브젝트이기 때문에 환경과 기술에 종속되지 않음
- 따라서 필요에 따라 재활용이 가능해짐
제어의 역전(Inversion of Control, IoC)
- 개발자가 애플리케이션을 제어하는 것이 아닌 스프링 프레임워크가 애플리케이션을 제어한다는 의미
- 라이브러리 vs 프레임워크
- 라이브러리는 개발자가 작성한 코드가 직접 제어의 흐름을 담당하는 것
- 프레임워크는 개발자가 작성한 코드를 제어하고, 대신 실행하는 것
의존성 주입(Dependency Injection, DI)
- 계층이나 서비스들 간에 의존성이 존재할 경우 스프링 프레임워크가 서로를 알아서 연결해줌
- 즉, 위임 관계에 있는 계층이나 서비스를 스프링 프레임워크가 적절한 빈을 주입하여 관리 - 제어의 역전
관점 지향 프로그래밍(Aspect-Oriented Programming, AOP)
- 로깅, 보안, 트랜잭션 등 공통적인 부분이 있는 경우 분리해서 관리하는 프로그래밍 기법
- 즉, 공통적인 부분을 매번 코드를 작성하거나 추가할 필요가 없으므로 관리, 유지보수 용이
서비스 추상화(Portable Service Abstraction, PSA)
- 다양한 서비스를 추상화를 통해 Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스를 분리
- 덕분에 우리는 애플리케이션을 개발할 때 내부적인 기술을 구현할 필요 없이 쉽게 사용 가능
- ex) @Controller, @RequestMapping => 실제로는 내부에서 Servlet을 통해 동작
반응형
'IT 개인 공부 > Spring' 카테고리의 다른 글
[Spring] 싱글톤 컨테이너 : CGLIB (0) | 2021.08.22 |
---|---|
[Spring] 조회한 빈(Bean)이 모두 필요할때 처리하는 방법 (0) | 2021.08.19 |
[Spring] 조회 빈(Bean)이 2개 이상일때 처리하는 방법 (0) | 2021.08.18 |
[Spring] Bean & DI & IoC 컨테이너 (0) | 2021.08.13 |
[Spring] 스프링(Spring) MVC 패턴 (0) | 2021.08.12 |
댓글