본문 바로가기

[Spring]

[Spring]11월 10일 Spring AOP, 핵심 관심 사항, 공통 관심 사항

Spring AOP 개요

Application을 두가지 관점에 따라 구현

-핵심 관심 사항(core concern)

-공통 관심 사항(cross-cutting concern)

● 기존 OOP 보완

-공통 관심 사항을 여러 모듈에서 적용하는데 한계가 존재

-AOP 는 핵심 관심 사항과 공통 관심 사항 분리하여 구현




핵심 관심 사항과 공통 관심 사항에 대해 예제를 통해 쉽게 이해 해보자

예제출저 : 여름나라겨울이야기 라는 tistory블로그에서 다룬 예제를 이름만 바꿔서 사용해 보았습니다.

Dog와 Cat 클래스를 생성해서 각각 하루일과를 수행하는 기능을 구현할것이다.


dog

주인을 기다린다.           

주인이 집에 들어온다.      before : 핵심 관심 사항 수행 전 해야되는 기능

꼬리를 흔들며 반긴다.      ←핵심 관심 사항

밥을 준다.                      after-returning : 핵심 관심 사항 무사수행 후 하는일 

밥을 맛있게 먹는다.         after : 핵심 관심 사항 끝나면 무조건


예외 상황 : 밤새 운다       after-throwing : 핵심 관심 사항 수행중 문제 발생시 수행


cat

주인을 기다린다.            

주인이 집에 들어온다.                  before : 핵심 관심 사항 수행 전 해야되는 기능

들어오던지 말던지 신경 안쓴다.     ←핵심 관심 사항

밥을 준다.                                  after-returning : 핵심 관심 사항 무사수행 후 하는일 

밥을 맛있게 먹는다.                     after : 핵심 관심 사항 끝나면 무조건


예외 상황 : 밤새 운다                   after-throwing : 핵심 관심 사항 수행중 문제 발생시 수행


dog만 하는 특이한 기능(꼬리를 흔들며 반긴다.), cat만 하는 특이한 기능(들어오던지 말던지 신경 안쓴다.) 이게 핵심 관심 사항이다.

이걸 클래스로 넣어보면


dog

package aop1;


public class Dog {

public void doSomething(){

System.out.println("주인을 기다린다");

System.out.println("주인이 집에 들어온다");

try

{

System.out.println("꼬리를 흔들며 반긴다");

System.out.println("밥을 준다");

}

catch(Exception e)

{

System.out.println("밤새 운다");

}

System.out.println("밥을 맛있게 먹는다");

}

}


cat

package aop1;


public class Cat {

public void doSomething(){

System.out.println("주인을 기다린다");

System.out.println("주인이 집에 들어온다");

try

{

System.out.println("들어오던지 말던지 신경안쓴다");

System.out.println("밥을 준다");

}

catch(Exception e)

{

System.out.println("밤새 운다");

}

System.out.println("밥을 맛있게 먹는다");

}

}



출처 : 삼성SDS멀티캠퍼스

강사 : 홍승길

Email : iccack70@gmail.com