잉?

[Spring] 스프링의 3대 요소(IoC/DI, AOP, PSA) 알아보기 본문

자바(Java)/스프링(Spring)

[Spring] 스프링의 3대 요소(IoC/DI, AOP, PSA) 알아보기

Jye_647 2023. 6. 22. 21:58

스프링의 3대 요소에 무엇이 있는지 간단하게 살펴보고자 한다.

 

스프링에서는 크게 3가지 핵심 프로그래밍 모델을 지원한다.


1. IoC/DI (제어의 역전 / 의존성 주입)

IoC(Inversion of Control, 제어의 역전)

역전은 형세가 뒤집힘, 거꾸로 회전함이라는 뜻을 가지고 있다.

객체에 대한 제어권이 바뀌었다(뒤집혔다)는 것을 의미한다.

밑의 첨부해 둔 게시글에서 아주 쉽게 예시를 들어준다.

차를 몰고 가는 것은 내가 차를 제어하는 것이다.
직접 차를 운전하는 대신 운전기사를 고용한다면 차를 직접 운전할 필요가 없고 본업에 집중할 수 있다.
이것을 제어의 역전이라 한다.

 

DI(Dependency Injection, 의존성 주입)

IoC와 비슷한 의미르 사용되지만 의존성 주입은 IoC가 구현된 한 가지이다.

각 클래스간의 의존관계를 컨테이너가 자동으로 연결해 주는 것을 말하는데

필요한 객체를 직접 생성하는 것이 아니라 외부로부터 객체를 받아 사용한다.

 

이를 통해 객체간의 결합도가 낮아지고 재활용성이 높아진다.

 

의존성 주입에는 3가지 방법이 있다.

- 생성자 주입(@Controller)

- 필드 주입(필드에 @Autowired 붙이는 방법)

- 수정자 주입(setter 메서드에 @Autowired 붙이는 방법)

 

 

Spring | 제어의 역전이란? (What is Inversion of Control?)

# IOC(Inversion of Control) 제어의 역전 직장에 차를 몰고 가는 것은 내가 차를 제어하는 것이다. 직접 차를 운전하는 대신 운전 기사를 고용한다면 이것을 제어의 역전이라고 한다. 차를 직접 운전할

velog.io


2. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)

애플리케이션에 공통적으로 나타나는 기능(관심사)들을 모듈화(분리)하는 프로그래밍으로

객체지향 프로그래밍을 돕는 기술이다.

기능들을 모듈화하여 객체지향스럽게 개발할 수 있도록 도와준다.

 


3. PSA(서비스 추상화)

환경의 변화와 상관없이 일관된 방식의 기술로 접근 환경을 제공하는 추상화 구조이다.

특정 환경이나 서버에 종속되지 않은 애플리케이션을 개발할 수 있다.

 

Spring은 대표적으로 Spring Web MVC, Transaction 등 다양한 서비스를 제공한다.

 

Spring Web MVC - 일반적인 서블릿 형태

뒷단에 spring이 제공해 주는 여러 기능들이 숨겨져 있기 때문에

어노테이션을 통해 편하게 코드를 작성할 수 있다. 

 

Transaction - 추상화 계층

오류 없이 진행된다면 commit(); 커밋되고,

하나라도 커밋 되지 않는다면 전체가 rollback(); 롤백한다.

 

 

Comments