Back-End/Spring

[Spring] 스프링 특징 IOC, AOP, DI 이란?

zsunny 2023. 12. 14. 21:37
Spring Framework의 주요 특징 IOC, AOP, DI

 

1. IOC (Inversion of Control) : 제어의 역전

Spring 컨테이너가 개발자 대신 의존성을 주입하고 객체의 생명주기를 관리하도록 하여 객체의 흐름을 관리

 

자바 기반 어플리케이션 개발시, 객체의 생성부터 소멸까지 및 의존 관계와 같은 흐름을 조작하고 결정하는 것은 개발자에게 있다. 하지만, IOC 패턴 사용시 객체의 생성 및 관리 등 제어 흐름의 결정 권한을 Spring 컨테이너에게 위임하여 객체의 라이프사이클을 관리하는 것을 말한다. Container가 bean을 관리해주기에 제어의 역전이라고 한다.

IOC의 장점

객체 간의 결합도를 낮춤

유연한 코드 작성

테스트의 용이성을 향상


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

공통적인 역할을 하는 코드의 중복이 발생하면 따로 모아 재활용 (인터페이스로 구현하고 implements로 상속받아 구현)

 

객체지향(OOP) 와는 또 다른 의미로 기존 OOP를 더욱 보완, 확장한 개념이다. 여러 메서드에서 공통적인 역할을 하는 코드의 중복이 발생하면 따로 모아 재활용하는 것을 말한다. 여러 메서드에서 사용되는 것을 인터페이스로 구현하고 implements로 상속받아 구현하게 된다.

OOP에서는 공통 핵심 기능을 각 객체의 종단으로 입력했다면, AOP는 핵심 기능에서 중복되는 공통적인 기능을 종단간으로 삽입할 수 있도록 하였다. DI가 의존성 주입이라면, AOP는 기능(로직)의 주입.

AOP의 장점

코드의 가독성, 유지보수성 향상

중복 코드 제거

생산성, 재활용성 극대화


3. DI (Dependency Injection) : 의존성 주입

직접 의존 객체를 생성하거나 관리하지 않고, 컴포넌트 간 의존성을 외부에서 주입하여 사용 

 

IOC와 연결되는 개념으로, 객체 자체가 아닌 프레임워크에 의해 객체의 의존성이 주입되는 설계 패턴이다. 생성자, 메서드에 setter, 멤버변수에 @Inject 또는 @Autowired 를 통해 주입하며, 이렇게 IOC 컨테이너에 의존성 주입을 하는 것을 DI라고 한다.

DI의 장점

컴포넌트 간의 결합도를 낮춤

테스트의 용이성 향상

코드의 재사용성, 유지보수성 향상

 

 

 

참고