일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 수학
- array
- hash table
- input
- 자바 thread 실행 순서 제어
- R
- scanner
- 자바 스레드 실행 순서 제어
- Kadane's Algorithm
- heroku
- JAVA11
- SpringBoot 2
- Easy
- 카데인 알고리즘
- 자바입력
- 사칙연산
- Today
- Total
DeFacto-Standard IT
IoC / DI / AOP 본문
IOC – Inversion of Control
프로그램의 제어 흐름구조가 바뀌는 것.
기존에는 main()과 같은 프로그램이 시작되는 entry point부터 object를 결정/생성하고 object의 메소드를 호출하는 작업을 반복함. IoC는 자신이 사용할 object를 생성하거나 선택하지 않고 어떻게 만들어지고 어디서 사용되는지 알 수 없다. 이를 Container에 위임하고, Container는 Bean 설정 정보를 바탕으로 Bean을 만들어 DI하고 이로 인해 IoC가 이루어진다.
한마디로, 프로그래머가 new 연산을 사용해서 객체를 만들던 것을, @Autowired, @Resource 등을 사용해 프레임워크로부터 객체를 받아(DI) 사용하게 되는 상황 자체를 의미
DI – Dependency Injection
의존하는 클래스에 대한 인스턴스를 직접 생성하지 않고, 컨테이너로부터 생성된 빈을 setter 혹은 생성자를 통해 외부로부터 주입받는 것.
팩토리 패턴 처럼 객체의 생성과, 데이터를 주입만 담당하는 Factory에 해당하는 별도의 공간(IoC Container)에서 객체를 생성하고 데이터간 의존성을 주입.
Factory 패턴의 Factory Class의 역할을 스프링의 환경설정 파일이 담당.
코드 재사용성 증가, 결합도 감소
한마디로, 프레임워크가 객체를 만들고, 이에대한 레퍼런스를 넘겨받는 것을 의미한다.
관점 지향 프로그래밍. 기존의 OOP에서 기능별로 Class를 분리했음에도 불구하고, 로깅, 예외처리, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 중복코드가 발생하는 횡단 관심사(공통된 코드)에 대한 모듈화.
재사용성이 증가하며 비즈니스 로직과 상관없거나 중복되는 소스는 모듈화되므로 비즈니스로직에 집중하여 개발 가능.
JoinPoint(메서드), PointCut(JoinPoint를 expression으로 표현), Advice(실제 비즈니스 로직과 관련된 methods),
Aspect(로깅, 트랜잭션 등 공통적으로 쓰이는 것들에 관련된 것을 모아놓은 class, Advice와 Pointcut을 합친 것)
'SpringFramework > References' 카테고리의 다른 글
Spring DataBinding (3) - AJAX Request via JQuery (JSON) (2) | 2018.05.02 |
---|---|
Spring DataBinding (2) - Spring Form Tag (0) | 2018.05.02 |
Spring DataBinding (1) - HTML Form (0) | 2018.02.10 |
Apache Tiles와 장단점 (0) | 2017.11.16 |
POJO (0) | 2017.11.16 |