코딩왕랄프👊🏻

[Spring] POJO / IoC / DI(3 types) / AOP 본문

카테고리 없음

[Spring] POJO / IoC / DI(3 types) / AOP

hyerm_2 2021. 7. 29. 21:17
반응형
SMALL
POJO?

Plain Old Java Object
특정 '기술'에 종속되어 동작하는 것이 아닌 순수한 자바 객체
특정한 API(예를 들어 Servlet)를 상속하거나 구현하지 않은 일반적인 자바 객체로 개

 

 

IOC?

Inversion Of Control
프로그램의 제어권(객체 생성, 객체간 의존관계 연결 등)이 어플리케이션에서 외부로 역전된 것.

기존에 자바 기반으로 어플리케이션을 개발할 때 자바 객체를 생성하고 서로간의 의존 관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었다.

그러나 Servlet, EJB 등을 사용하는 경우 Servlet Container, EJB Container에게 제어권이 넘어가서 객체의 생명주기(Life Cycle)를 Container들이 전담하게 된다.

이처럼 IoC에서 이야기하는 제어권의 역전이란 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미



 

 

 

 

DI?

Dependency Injection
객체 간의 의존관계를 외부에서 주입해주는 것
 1) constructor 2) setter

각 클래스 사이의 의존관계를 빈 설정(Bean Definition)정보를 바탕으로 컨테이너가 자동적으로 연결해주는 것을 말한다.

개발자들은 단지 빈 설정파일(저장소 관리 파일)에서 의존관계가 필요하다는 정보를 추가하기만 하면 된다.

 

Constructor Injection
=> 컴퍼넌트의 dependency 가 constructor의 argument를 통해 제공되는 방식
Setter Injection
=> 컴퍼넌트의 dependency 가 JavaBean-style setter를 통해 제공되는 방식
Method(Interface) Injection
컴퍼넌트의 dependency 가 일반 메소드를 통해서 제공되는 방식 (거의 사용하지 않으므로 배우지 않겠다.)

 

 

 

 


AOP?

Aspect-Oriented Programming
관점(관심) 지향 프로그래밍
횡단관심사(cross-concern)의 모듈화를 지향하는 프로그래밍 패러다임
 애플리케이션 전체에 걸쳐 사용되는 기능을 재사하도록 지원하는 것

 

장점
=> 어플리케이션 전체에 흩어진 공통 기능이 하나의 장소에서 관리된다는 점
=> 다른 서비스 모듈들이 본인의 목적에만 충실하고 그외 사항들은 신경쓰지 않아도 된다는 점

 

 

# 용어

 

Target
=> 부가기능을 부여할 대상
=> 핵심기능을 담당하는 getBoards 혹은 getUsers를 하는 Service 들
Aspect
=> 핵심기능에 부가되어 의미를 갖는 특별한 모듈, 부가기능모듈
=> 부가될 기능을 정의한 어드바이스와 어드바이스를 어디에 적용할지를 결정하는 포인트컷을 함께 갖고 있음
Advice
=> 실질적으로 부가기능을 담은 구현체
=> 타겟 오프젝트에 종속되지 않기 때문에 순수하게 부가기능에만 집중
PointCut
=> 부가기능이 적용될 대상(메소드)를 선정하는 방법
=> Advice를 적용할 조인포인트를 선별하는 기능을 정의한 모듈
JoinPoint
=> 어드바이스가 적용될 수 있는 위치
=> 타겟 오프젝트에 종속되지 않기 때문에 순수하게 부가기능에만 집중
Proxy
=> 타겟을 감싸서 타겟의 요청을 대신 받아주는 랩핑(Wrapping) 오브젝트

 

 

참고

http://wiki.gurubee.net/pages/viewpage.action?pageId=26740787 

https://peter0307.tistory.com/8

반응형
LIST