Skip to content

Commit

Permalink
spring essence
Browse files Browse the repository at this point in the history
  • Loading branch information
greeng00se committed Oct 5, 2023
1 parent 0c9f3c8 commit bcf99e2
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions docs/스프링/스프링의 특징.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: 스프링의 특징
slug: /spring/essence
last_update:
date: 2023/10/05
tags: [spring]
---

스프링의 핵심 개발자들이 쓴 Professional Spring Framework 라는 책에서는 스프링의 정수(essence)는 "엔터프라이즈 서비스 기능을 POJO에 제공하는 것" 이라고 했다.

### POJO(Plain Old Java Object)

객제지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트
스프링 애플리케이션은 POJO를 이용해서 만든 애플리케이션 코드와, POJO가 어떻게 관계를 맺고 동작하는지 정의해놓은 설계 정보로 구분된다.

### IoC/DI(Inversion of Control/Dependency Injection)

제어의 역전(IoC)은 스프링에서만 적용되는 개념은 아니다.
간단하게 설명하자면 프로그램의 제어 흐름 구조가 바뀌는 것이다.
프레임워크는 제어의 역전이 적용된 대표적인 기술이라고 볼 수 있다.
의존성 주입(DI)은 클래스 사이의 의존관계를 설정 정보를 바탕으로 컨테이너가 자동적으로 연결해 주는 것을 의미한다.
스프링은 IoC/DI를 통해 싱글톤 형태의 오브젝트의 생성, 관계 설정, 공급에 대한 기능을 제공한다. 그렇기 때문에 IoC 컨테이너 또는 DI 컨테이너라고도 불린다.

토비의 스프링에서는 DI 컨테이너라는 용어에 대해 다음과 같이 설명하고 있다.

> IoC가 매우 느슨하게 정의돼서 폭넓게 사용되는 용어라는 점이다. 때문에 스프링을 IoC 컨테이너라고만 해서는 스프링이 제공하는 기능의 특징을 명확하게 설명하지 못한다. … 새로운 용어를 만드는 데 탁월한 재능이 있는 몇몇 사람의 제안으로 스프링이 제공하는 IoC 방식의 핵심을 짚어주는 의존관계 주입(DI)이라는, 좀 더 의도가 명확히 드러나는 이름을 사용하기 시작했다. 스프링 IoC 기능의 대표적인 동작원리는 주로 의존관계 주입이라고 불린다. … 그래서 초기에는 주로 IoC 컨테이너라고 불리던 스프링이 지금은 의존관계 주입 컨테이너 또는 DI 컨테이너라고 많이 불린다.
토비의 스프링 p.111

### AOP(Aspect Oriented Programming)

애플리케이션의 핵심적인 기능에서 부가적인 기능을 분리해서 모듈화하는 것
예) 핵심 기능 = 비즈니스 로직, 부가 기능 = 로깅, 트랜잭션
관점 지향 프로그래밍이라고 하는데 이는 OOP와 같이 독립적인 프로그래밍 패러다임이 아닌 보조적인 기술이다.

### PSA(Portable Service Abstraction)

환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 기술이다.
POJO로 개발된 코드는 특정 환경이나 구현 방식에 종속적이지 않아야 한다.
스프링은 POJO 코드가 특정 기술에 종속되지 않게 일관성 있는 서비스 추상화 기술을 제공한다.

### 참고 자료
[Spring Core, Spring.io](https://docs.spring.io/spring-framework/reference/)
토비의 스프링 3.1, 이일민

0 comments on commit bcf99e2

Please sign in to comment.