개발/코딩

[SPRING] IOC,DI,AOP의 대략적 이해_스프링5(최범균님 저)_1회독 중

mabb 2022. 4. 9. 13:21
반응형

 안녕하세요. 삶의 질을 높이고자 노력하는 영차영차입니다.
요즘은 단기 계약일을 하면서 최범균님의 저서 스프링5를 읽어보고 있습니다.
빠르게 1회독을하여 대략적인 이해를 하고 2회독부터는 주요기능 반복훈련을 해볼 계획입니다.
챕터7까지 보고 이해한 내용을 간략하게 포스팅해봅니다.
틀린 내용은 댓글로 알려주시면 감사하겠습니다.

 

-------------------------------------------------------------------

 닭볶음탕의 양념을 만드는 방법

방법1. 홍고추를 말리고 갈아서 고춧가루를 만든다,마늘 껍질을 까서 칼로 다진다,간장을 만들기 위하여 메주를 만들고...
방법2. 고춧가루를 산다, 다진마늘을 산다, 간장을 산다. 양념 재료를 정해진 비율로 섞어서...
방법3. 닭볶음탕용 양념을 산다.

 목적인 닭볶음탕을 위해서 만들어진 양념을 사는 것이 스프링을 쓰는 이유와 비슷하지 않을까 생각해본다.
스프링 프레임워크는 중복 코드,반복코드 등을 처리해주고 코딩의 틀을 제공해주어 더 편리하게 개발을 할 수 있게 해주는 도구이다. 프로그래밍을 공부하면서 뭔가 새로운 것이 나온다면 그것을 이해하는 기본 관점은
'더 편해지려는 인간의 욕망'인 것 같다. 중복되는 것은 줄이고 유지보수를 위한 수정은 편리하게.
스프링의 기본개념인 IOC/DI/AOP를 간략하게 이해해보았다.

1. IOC 인버전 오브 컨트롤: 제어의 역전
"내가 제어해줄테니 편리해져라"

제어의 역전. 뭘 역전시키느냐. 프로그래머가 제어하던 객체 생성 등의 코딩의 흐름을 프로그램이 대신해줌.
프로그램이 코딩을 제어한다는 개념이 제어의 주체가 역전되었다는 의미로 이해해봄. 어쨌든 스프링이 프로그래머가 해야할 제어를 대신 해주어서 프로그래머는 편리해진다는 의미.


2. DI 디펜던시 인젝션: 의존 주입
"의존 주입도 내가 해줄테니 편리해져라"

의존이 무엇이냐. A객체가 기능을 수행하기 위하여 B객체를 필요로 할 때 A는 B에 의존한다. B는 A의 의존객체.
A객체 내에서 B객체의 기능을 사용하기위해 B객체를 생성하고 호출하는 것을 주입한다고 함.
매번 의존객체를 코드내에서 생성하고 호출할 경우 생기는 문제는 코드의 반복과 수정의 어려움.
스프링은 의존 주입을 자동으로 해주는 기능이 있다.
스프링 컨테이너를 이용하여 프로그래머가 설정한 정보를 토대로 객체를 생성하고 주입해준다.  


3.AOP 에스펙트 오리엔티드 프로그래밍: 관점지향프로그래밍
"공통기능도 내가 해줄테니 편리해져라"

말이 어렵다. 관점지향프로그래밍. 관점이라는 표현이 헷갈리는데 '기능'에 초점을 맞춘 프로그래밍이라고 이해해봄.
사칙연산을 수행하는 계산기 프로그램이 있다. 더하기,빼기,곱하기,나누기는 핵심기능. 여기서 각각의 사칙연산 메서드에
소요되는 시간을 측정하는 기능을 추가할 경우 코드도 중복되고 수정도 어렵다.. 시간측정 기능은 공통적으로 적용되는 공통기능이므로 이런 공통기능을 대신해주는 객체가 있으면 편리할 것이다. 이러한 기능을 수행해주는 객체를 프록시(Proxy)라고 한다. 프록시는 핵심기능은 다른객체가 처리하고 공통기능을 처리해주는 역할을 한다.

스프링은 핵심기능에 공통적으로 적용되는 공통기능을 자동으로 프록시 객체로 만들어주며, 이를 핵심기능 전,후에 호출해주는 방식으로 AOP를 구현해준다. 나는 공통기능을 처리해줄테니 너는 핵심기능에 집중하거라.

반응형