Study📚/Java

Spring - 스프링 프레임워크(Spring Framework)

woo!na 2024. 1. 9. 22:00

- 프레임워크(Framework)란?

어플리케이션을 구현하고 관리하는 환경(틀, 약속, 뼈대, ...)

 

 

- 스프링 프레임워크(Spring Framework)란?

스프링은 엔터프라이즈 어플리케이션 개발을 위한 어플리케이션 프레임워크이다. 어플리케이션 프레임워크는 개발을 빠르고 효율적으로 할 수 있도록 어플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델, API 등을 제공해준다.

 

스프링 프레임워크는 전달받은 설정 정보에 의해 어플리케이션을 구성하고 객체를 생성, 관리하는 주체이다.

 

 

- 스프링 프레임워크의 핵심 개념

프레임워크는 어플리케이션을 구성하는 객체의 생성 방식과 동작 방식에 대한 틀을 제공하며 코드 작성에 대한 기준도 제시해준다. 이런 틀을 프로그래밍 모델이라고 하며 스프링은 세 가지 핵심 프로그래밍 모델을 제공한다.

 

1) IoC/DI

객체 생명 주기와 의존 관계에 대한 프로그래밍 모델이며 스프링을 바르게 이해하고 효율적으로 사용하는데 기본이 되는 아주 중요한 기술이다.

 

IoC(Inversion of Control) : 제어의 역전. 객체 관리의 주체에 관한 것으로, 객체 생성과 관리를 직접 하는 것이 아니라 외부(컨테이터)에서 만들어진 객체를 제공받는 입장이 되는 것이다.

 

DI(Dependency Injection) : 의존성 주입(의존관계 주입). 객체를 관리하는 방법에 관한 것으로, 자바에서 객체를 생성하고 관리하는 방법은 모두 has-a 관계를 통해 처리해 왔기 때문에 이들의 의존관계는 모두 치밀하고 밀접한 상황이다. 강한 결합 상태는 유연성을 떨어뜨리는데 이러한 결합 상태를 풀어주는 방법이 DI 이다.

 

2) 서비스 추상화

스프링을 사용하면 환경이나 서버, 특정 기술에 종속되지 않고 이식성이 뛰어나며 유연한 어플리케이션을 만들 수 있게 되는데, 이를 가능하게 해 주는 것이 바로 서비스 추상화이다. 이는 구체적인 기술과 환경에 종속되지 않도록 유연한 추상 계층을 두는 방법이다.

 

3) AOP(Aspect Oriented Programming)

주 업무를 실행할 때 보조적인 업무가 진행되어야 한다. 만약, 주 업무가 여러 개이고, 동일한 보조업무의 수행이 진행되어야 한다면 보조 업무 부분은 중복된 코드가 될 수 밖에 없다. 이런 중복 요소를 제거하고 보조업무를 보다 독립적인 방법으로 실행할 수 있도록 구성하는 것을 AOP 기법이라고 한다.

 

주 업무(core concern) : 핵심적인 기능을 수행하는 부분. 사용자의 요청에 대한 기본적인 수행 및 결과 반환을 해야 한다.

보조 업무(cross-cutting concern) : 주 업무 실행 시 발생하는 보조적인 업무. 주 업무와 분리 및 결합이 쉽게 이루어질 수 있도록 만들어야 한다.

 

*AOP 에서 주인공은 주 업무가 아닌 바로바로 보조 업무 이다!!*