SPRING

AOP (Aspect-Oriented Programming)

nang. 2019. 3. 18. 22:52
반응형
SMALL

★ AOP( Aspect-Oriented Programming)

* AOP란?

- 관점(관심) 지향 프로그래밍

- 소프트웨어의 요구사항을(각 기능을) 핵심 기능과 부수적 기능으로 분할하여 개발 후 통합

- S/W 시스템 내부의 관심사들을 서로 분리 시킴 ---> 독립적 개발 후 결합

- 공통 기능(시스템 서비스)을 별도로 모듈화하여 구현하고 Aspect(일종의 주입)를 통해 (얘가 중간에서 처리) 비즈니스 클래스에 선언적으로 적용

- 비즈니스 로직 실행 전이나 후에 공통 기능 모듈을 실행시킴

- 모듈화를 극대화하는 개발 방법

- OOP(Object-Oriented Programming)의 한계 극복

--> 모듈화를 잘 하더라도 부수적 기능이 핵심 기능에 포함 됨

- OOP와 달리 분리하면 핵심 기능에서 부수적 기능을 직접 호출하는 것이 아니라 Aspects를 활용함

- 런타임 시 weaving

--> aspect가 적용된 Proxy를 생성하여 Proxy를 통해 핵심 로직에 접근

- 핵심 business logic과 system services 사이의 독립성 보장

      


★ DI : 객체와 객체 사이 의존

★ AOP : 컴포넌트 간 , 서비스 간 의존


* core ----> cross


- 로그 코드와 핵심 코드가 섞이면 복잡해짐

- 코드의 중복성 : 다른 비즈니스 메소드 또는 클래스들도 유사한 코드를 매번 포함해야함 --> 수정이 어려움



* 코드..

- joinPoing : aspect가 적용될 target class(주요 클래스)에 대한 정보를 이미 가지고 있음

그래서 joinPoint.proceed(); 이렇게 하면 그 클래스가 실행되는 것.




	 

                
			

                
		

                        
			

		
	





반응형
LIST