개발자들의 봄이 왔다!
Spring이란 ?
- Spring은 Java 기반의 어플리케이션 프레임워크로, Java EE의 스펙을 구현한 EJB가 복잡하고 성능이 느린것을 탈피하고자 만들어진 오픈 소스 프레임워크이다.
- EJB 시절을 겨울에 빗대어 겨울 후의 봄으로 새롭게 시작한다는 것을 의미하는 스프링(봄)이 되었다.
- 한국 전자정부표준프레임워크의 기반 기술이며, 한국정보화진흥원에서는 공공기관의 웹 서비스 제공 시 스프링을 권장하고 있다.
프레임워크(Frame Work)란?
- 목적에 필요한 것을 고민할 필요 없이 이용할 수 있도록 일괄로 가져다 쓰도록 만들어 놓은 '구조화된 틀'이다.
- 더 간단히 말하자면 자주 쓰일 만한 기능들을 한데 모아 놓은 유틸(클래스)들의 모음이라고 정의할 수 있다.
- 설계의 기반이 되는 부분을 기술한 확장 가능한 기반 코드와 사용자가 코드를 수정, 확장하는데 필요한 라이브러리 이 두 가지 요소가 통합되어 제공되는 형태이다.
- 즉, 프레임워크는 기본적인 설계나 필요한 라이브러리는 알아서 제공해 줄 테니 개발자는 만들고 싶은 기능을 구현하는데만 집중해라라는 취지에서 만들어진 것이다.
프레임워크와 라이브러리의 차이점
- 라이브러리는 개발에 필요한 것들을 미리 구현해 놓은 도구들이다.
- 프레임워크는 라이브러리를 포함하고 있다.
- 프레임워크와 라이브러리의 차이점은 제어 흐름에 대한 주도성이 어디에 있는가에 있다.
- 프레임워크는 전체적인 흐름을 스스로(프레임워크)가 쥐고 있으며 사용자(개발자)는 그 안에서 필요한 코드를 짜 넣는 반면, 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있다.
Spring의 주요 특징
DI(Dependency Injection) / IoC(Inversion of Control)
- DI는 의존성 주입을 뜻한다. 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식이다. 코드의 재사용을 높여 코드를 다양한 곳에 사용할 수 있으며, 모듈 간의 결합도도 낮출 수 있다.
- IoC는 제어의 역전을 뜻한다. 인스턴스의 생성부터 소멸까지의 객체 생명주기를 개발자가 관리하는 것이 아닌 스프링이 대신해주는 것이다.
- 이것들은 코드와 함께 이해하는 편이 편하여 다른 게시글에서 따로 다루도록 하겠다.
AOP(Aspect Object Programming)
- AOP는 관점 지향 프로그래밍을 뜻한다.
- 로깅, 트랜잭션 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리할 수 있다.
- 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법이다.
- AOP 또한 코드와 함께 이해하는 편이 편하여 다른 게시글에서 따로 다루도록 하겠다.
PSA(Portable Service Abstractions)
- PSA는 이식 가능한 서비스 추상화이다.
- 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스를 뜻한다.
- 대표적인 예로 JPA, MyBatis, JDBC와 같이 데이터베이스에 접근하기 위한 기술이 달라도 동일한 인터페이스를 쓸 수 있거나 톰캣, Undertow, Netty 등 다른 WAS를 사용하더라도 비즈니스 로직은 그대로 사용할 수 있는 것이 있다.
POJO(Plain Old Java Object)
- POJO는 단순히 자바 그 자체의 모습을 뜻한다.
- Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 단순한 자바 객체로 프레임워크를 사용할 수 있다.
- Java EE를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이하고, 객체가 가볍다는 특징이 있다.
정리
- 스프링은 자바 기반의 엔터프라이즈급 개발을 편하게 해주는 오픈소스 경량급 어플리케이션 프레임워크이다.
- 스프링의 특징은 DI/IoC, AOP, PSA, POJO가 있다.
[Spring] Spring IoC / DI 란?
[Spring] Spring이란? 개발자들의 봄이 왔다! Spring이란 ? - Spring은 Java 기반의 어플리케이션 프레임워크로, Java EE의 스펙을 구현한 EJB가 복잡하고 성능이 느린것을 탈피하고자 만들어진 오픈 소스 프
dev-density.tistory.com
[Spring] Spring AOP란?
Spring AOP AOP(Aspect Oriented Programming) AOP는 관점 지향 프로그래밍이라고 불린다. 관점 지향은 객체 지향, 절차 지향 과는 또 다른 패러다임으로 특정 로직을 기준으로 핵심적인 관점, 부가적인 관점
dev-density.tistory.com
'Spring' 카테고리의 다른 글
[Spring] Spring AOP란? (1) | 2023.10.29 |
---|---|
[Spring] @ControllerAdvice로 요청, 응답 데이터 암/복호화 리팩터링 (1) | 2023.10.23 |
[Spring] Spring IoC / DI 란? (1) | 2023.10.08 |