관리 메뉴

nalaolla

AOP-Aspect Oriented Programming 본문

SPRING

AOP-Aspect Oriented Programming

날아올라↗↗ 2016. 3. 25. 10:18
728x90
반응형

AOP-Aspect Oriented Programming

관점 지향 프로그래밍 - 어플리케이션 핵심이 모듈을 구동함에 있어서 공통적으로 적용되는 기능(트랜젝션,보안,Logging 등등)을 분리하여 적용하는 기술을 말함.

기존방법 상속 : 상속은 다중모듈에서 구현히 힘들다.

관점 지향방식 : spring AOP 는 특정객체를 생성하여 이를 필요로 하는곳에 끼워넣어서 처리한다.

용어정리:

1. Aspect : 공통 관심 사항

2. Advice : Aspect 처리시 실행문 또는 기능구현부

3. Joinpoint : Advice를 적용할 메소드 콜 또는 필드값 초기화, 자바단과 Advice를 연동설정

4. PointCut : Joinpoint의 일부분으로서 실제 Advice에 설정시 클래스,메소드,정규표현식등으로 설정한다.

5. Weaving : Advice,Pointcut 을 조합하는 과정을 말함. spring Weaving 시점은 컴파일,로딩,런타임 이렇게 3가지 방법중 런타임시점 위빙이다.

6. Target : Advice 대상이되는 객체 혹은 모듈

7. Proxy : Advice 를 Target에 적용시 생성되는 객체를 의미하며 개발자가 최종적으로 원하는 공통모듈 구현 객체이다.

spring AOP 의 특징 :

1. Advice는 class로 구현

2. Aspect 는 런타임시점에 위빙

3. Joinpoint 는 메소드에만 지원(생성자 지원안함)

4. AOP구현 방법 3가지 : spring api, POJO(Plain Old Java Object), AscpectJ5 @Aspect 어노테이션 사용

참고 POJO : 스프링이전 EJB(Enterprise Java Bean) 서버 관리 프로그램의 프레임워크나 특정 자바 모델에 종속이지 않는 자바객체를 표현하기 위한 용어(마틴 파울러)이며 스프링은 POJO방식 프레임워크이다.

[POJO AOP]

XML 스키마 설정

root-context.xml aop Namespaces 설정

<aop:config> : AOP 정보 루트<aop:aspect> : Aspcet 설정<aop:pointcut> : Pointcut 설정

Advice 설정

<aop:before> : 메소드 실행전 적용 Advice<aop:after-returning> : 메소드 정상실행 후 적용 Advice<aop:after-throwing> : 메소드 예외발생시 적용 Advice<aop:after> : 메소드 오류유무에 상관없이 적용되는 Advice<aop:around> : MethodInterceptor 처럼 메소드 호출전,후 모든 시점에 적용되는 Advice

[설정 예 : ]

<aop:config> <aop:pointcut id="pt" expression="정규식"/> <aop:aspect id="testAspect" ref="빈이름"> <aop:around method="logging" pointcut="pt" /> </aop:aspect></aop:config>

[스프링AOP]

스프링AOP는 인터페이스에 선언된 메소드에만 적용할 수 있다.

728x90
반응형