본문 바로가기
IT/Java

Spring 에서 IOC, AOP, DI 에 대하여

by 성준하이 2022. 3. 9.
반응형

이번 포스팅에서는 SPRING의 핵심요소인 IOC, AOP, DI에 대해서 다뤄볼 것이다.

다른 특징들도 많지만 이 세가지는 스프링의 장점으로 많이 알려져있다.

 

하나씩 다뤄보도록 해보자.

 

IOC(Inversion of Control)

한글로 직역하면 제어의 역전이다.

Spring 에서는 Container라는 개념이 있는데, 이 컨테이너는 객체를 담는 용기이다.

bean의 생성부터 소멸까지 생명주기를 관리하게 된다.

Container가 bean을 관리해주기에 제어의 역전이라고 한다.

쉽게 말해서 스프링컨테이너가 필요에 따라 개발자 대신에 bean을 관리해주는 행위라고 생각하면 된다.

 

AOP(Aspect Oriented Programming)

관점 지향 프로그래밍이라는 뜻으로 객체지향(OOP)과는 또다른 의미로 사용이된다.

여러 메서드에서 공통적으로 해야하는 일의 코드가 중복이 된다면 따로 모아서 관리를 하며 재활용을 하는것을 뜻한다.

여기서 상속의 개념이 좀 들어가게 되는데 여러 메서드에서 사용되는것을 인터페이스로 구현을 하고 implements로 구현을 받게 된다.

자세한 상속의 개념은 아래 참고 포스팅을 참조해보도록 한다.

 

 

DI(Dependency Injection)

의존성주입이라고 하고 아마 가장 많이 들어봤을 말이라고 생각한다.

어떤 객체에 스프링 컨테이너가 또 다른 객체와의 의존성을 맺어주는것을 주입이라고 하면서 설명이 된다.

IoC 컨테이너 에서 빈 객체를 생성하는것이다.

대부분의 프레임워크에서는 IoC가 적용이 되긴 하지만 스프링에서는 di가 차별성이다.

기존의 코드에서는 

public class AA{
.....
}
public class BB{
     private AA aa;
     public BB(){
          aa = new AA();
     }
}

이런식으로 객체를 new 생성자를 사용하여 선언하였지만

DI 의존성 주입이 들어간다면

@Component    // Bean등록
public class AA{
.....
}
public class BB{
     @Autowired  // 의존성 주입 annotaion
     private AA aa;
}

이렇게 Bean에 등록하고 의존성 주입을 통해서 사용할수 있다.

annotation 관련해서는 아래 참고 포스팅을 확인해보자.


참고 포스팅

https://thenicesj.tistory.com/133

 

implements, extends 란?

java를 사용해본 분들이라면 상속의 개념에 대해서는 들어봤을것이다. 그리고 사용해보지 않으신분들도 상속이라는게 뭔지는 알것이다. 프로그래밍언어에서 말하는 상속이란, 부모 클래스와 자

thenicesj.tistory.com

 

https://thenicesj.tistory.com/91

 

Annotation 소개 및 설명

다른 프로그래밍 언어에도 사용은 되지만 java의 spring/ springboot에서 특히 효율적으로 사용이 되는 Annotation에 대해 알아볼것이다. 영어사전을 찾아보면 뜻은 '주석' 이라는 뜻을 가진 단어인 annotat

thenicesj.tistory.com

 

반응형

댓글