끄적끄적

[JAVA] spring - IOC,AOP,DI 란? 본문

Back-end/Java

[JAVA] spring - IOC,AOP,DI 란?

mashko 2020. 4. 13. 02:26
반응형

자바 spring 의 ioc,aop,di를 알아보도록 합시다.
자바 스프링으로 개발하면서 기본적으로 알아야하는게 뭐냐고 하면 ioc,aop,di 개념을 많이 이야기합니다.
생각해보면 스프링 프레임워크로 개발을 하면서 이미 우리는 다 알고 있고, 이미 많이 접하고 있다고 생각드네요..

IOC? Inversion of Control
즉, 제어의 역전이라고 부릅니다. 이 말이 뭐냐면.. 한마디로 프레임워크의 라이프사이클을 관리합니다.
쉽게말해 객체의 생성과 그 객체들의 관리까지 모두 관리한다는 개념인데, 기존에 자바 기반으로 어플리케이션을 개발할 때 자바 객체를 생성하고 서로간의 의존 관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었는데 IOC 컨테이너는 객체의 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 객체의 생명주기를 관리합니다 이것을 제어권이 역전되었다해서 IOC라고 부릅니다.

AOP? Aspect Oriented Programming
관점지향프로그래밍이라고 부르는데,
우리가 개발을 하다보면 반복되는 작업들이 있습니다. 이것들의 공통 작업되는 것들을 모아서 필요한 적절한 시기에 적용하는 개념입니다.
따로 코드 밖에서 개발을 해두고 프록시개념으로 메서드가 실행되기전, 실행된 직후, 실행시점에 따라 따로 기능을 적용 시키는 것입니다.

DI? Dependency Injection
의존성 주입
객체 자체가 아니라 Framework에 의해 객체의 의존성이 주입되는 설계 패턴인데 IOC와 연결되는 개념입니다.
IOC의 제어권이 프레임워크에게 가게 되는것은 IOC 컨테이너는 DI를 통해 주입시키는데 주입하는 방법은 생성자,메소드의 setter, 멤버변수에 @Inject,@Autowired 를 통해 주입합니다.
이러한 방법으로 IOC 컨테이너에 의존성주입을 하는것을 DI라고 부릅니다.

공부를 하며 또는 실무에서 개발을 하며 우리가 흔히 사용하는 것들의 주요 개념을 이론상 정리된 것이라고 보면 되는 것 같네요..
사실상.. 이 개념들은 주니어 면접질문에서 가~끔 나오더군요. 이 개념을 모르면 좀 곤란하긴 하죠.. 안 따를 수도 없는 개념이기 때문에
한번 되새김하고 지나갑시다.

반응형

'Back-end > Java' 카테고리의 다른 글

[JAVA] JavaTimeModule 포멧팅  (0) 2021.11.12
[JAVA] Enum 삽질기..  (1) 2021.11.11
[JAVA] Spring Boot json Enum json object or jsonvalue  (0) 2021.11.10
[JAVA] JVM 동작원리  (0) 2021.05.10
[JAVA] 의존성 주입(DI)  (0) 2021.05.06
Comments