Spring_Aop_Anno2

2017. 7. 31. 22:04· FrameWork/spring
반응형
SMALL

프로젝트 하나 만들어서



Maven 으로 바꿔서 


pom에 의존라이브러리 가져다놔



src 에 패키지 3개 만들어



서비스에 인터페이스 하나 만들어




이렇게 코딩해놔


Impl 클래스도 만들어




이렇게 코딩해줘


얘도 bean 이 되려면


@service 추가해주고


컴퍼넌트스캔이 일어나면 돼



init.xml 옮겨와서 컴퍼넌트 스캔이 일어나도록~



이거 추가해주고


어노테이션이 일어나도록 해주기 위한 준비작업


이 작업을



이 두 메소드에 적용시키고 싶어


이 작업을 하기전에


내가 bean 으로 가지고 있는 모든 객체에 수행 이전에 이 작업을 수행 하라는 의미임



MainClass 만들어서


이렇게 해서 run




이거의 의미는


전달받는 인자가 아무것도 없는 모든 메소드를 선택하는 것이라서


선생님에게 글쓰기는 적용이 안된것 !


간략하게 설명 해 둔 것이고


Aspectj Expression 검색해보면 이것저것 많이 나옴



여기 가보면



컴퍼넌트 스캔이 일어나면 서비스가 bean 이 되어 작업이 수행됌


메소드가 수행되기 이전에 수행해야 할 작업이 있는데


그 메소드가 100군데 있으면 100군데에 다 복사 붙여넣기 해야해


그럼 대 공사야


그 작업이 자주 바뀌는 작업이면 또 가서 다 수정해야해


AOP 의 개념은 핵심 로직과 상관없는 횡단관심사(crosscutting concerns)라고 있는데 그걸 처리할때 AOP를 적용하면 쉽게 할수 있다.

(필요한 시점에 원하는 위치에 적용을 시킬수 있어)


이런 작업을 필요로 하는 곳이 웹 어플리케이션에선 인증작업, 트랜잭션을 관리 할 때 이렇게 두군데에 많이 쓰임



메소드 안에 전달된 인자(String name, int num .. 등)에 뭐가 들어가 있는지 알아낼수도 있고

메소드에 있는 request 나 session 에 있는걸 추출해 낼수도 있어

리턴되는 데이터를 가져와서 조작을 할 수도 있어


-------------------------------------------------

호출되기 이전 before

호출된 직후 after

호출되기 이전과 이후는 around

-------------------------------------------------




여기로 가보면



aop 를 적용하기 위한 어노테이션


횡단관심사를 적용할 메소드를 적용

@Before 를 해놓았으니 이전에 적용을 하는 것



여기에 코드를 추가해볼거야




이 코드 추가하고 그리고 실행



이렇게 적용이 된 것을 확인 가능해


이제


여기에 AOP를 around 로 적용을 할거야


메소드의 인자가 하나 있는 걸 보고



(*) 로 해주고


joinPoint 는 execption 이 발생 하니 threows 해줘




전달 한 내용을 읽어 온 것을 확인가능 ㅎㅎ



이전과 이후에 적용할걸 정의 할 수 있어


실행 시켜 보면



이전과 이후에 적용이 된 것을 확인 가능해


실행시점에 클래스를 새로 만들어서 사용 하는 것임


WritingService 에 메소드 하나 더 추가



맵을 리턴하도록



여기에 오버라이딩 해줘





이거 추가해주고 리턴 타입과 메소드에 전달 인자가 없는 것을 확인해



WritingAspect 로 가서 


이거에 적용할 Aop 를 만들어





이거 추가해줘


실행되는 시점에 동적으로 만들어 지는데 어떤 타입인지 패키지 명을 밝혀 줘야해




MainClass를 이렇게 만들어 준후


Run




리턴되는 데이터를 조사가 가능해





주석을 달아보면 이렇게 되는 것


MainClass 를


이렇게 수정해 주고




Object로 수정하고

리턴되는 데이터가 있으면 Object로 받아와서 뭔가 작업을 해주고 그대로 돌려줘

만약에 안돌려 주면 NulPointException 발생


-------------------------------------------------------------------------------------------------------


map을 수정했는데 object 를 리턴해줘

자바는 객체지향 언어야

키 값이 리턴되는데 키값을 object로 받은거야

map 이라는 거에 있는거나 obj에 있는 거나 같은 키값이야

변수에 대한 사용설명서만 다른 것.

20번 사물함 가서 뭔가를 수정해주고

20번 키를 리턴해주는 거야


그래서 map 에서 수정을 가해서 obj를 리턴해줘도 아무 상관이 없는 것.


-------------------------------------------------------------------------------------------------------



다시 Main 에서 Run



Aop 에서 찍은거와 리턴되는 데이터를 찍은것을 확인가능



여기는 after 에서 작업한거야


AOP를 꼭 인증과 트랜젝션에서만 사용할 필요는 없어

다른곳에서 사용할 수 있으면 특이한 코딩 할수도 있음








반응형

'FrameWork > spring' 카테고리의 다른 글

spring 설명 그림  (0) 2017.09.07
리스트 파일 pdf 로 다운받기  (0) 2017.08.24
Spring_Aop_Anno  (0) 2017.07.31
Spring_Aop  (0) 2017.07.31
Step06_FileUpload  (0) 2017.07.30
'FrameWork/spring' 카테고리의 다른 글
  • spring 설명 그림
  • 리스트 파일 pdf 로 다운받기
  • Spring_Aop_Anno
  • Spring_Aop
- 광속거북이 -
- 광속거북이 -
IT관련 일하면서 공부 및 일상 에 관한 내용들을 기록하기 위한 블로그 입니다.
누리IT관련 일하면서 공부 및 일상 에 관한 내용들을 기록하기 위한 블로그 입니다.
- 광속거북이 -
누리
- 광속거북이 -
전체
오늘
어제
  • 카테고리 (451)
    • 구글문서 (4)
    • 설치방법들 (3)
    • FrameWork (73)
      • Django (6)
      • Python (32)
      • AngularJS (13)
      • spring (21)
    • Programing (61)
      • JAVA (11)
      • etc... (2)
      • 오류 해결 (29)
      • Algorithm (5)
    • Front-End (25)
      • CSS (3)
      • html (6)
      • javascript (10)
      • vueJS (5)
    • Back-End (35)
      • 리눅스 (12)
      • PostgreSQL (14)
      • MySQL (2)
      • Shell (1)
      • docker (1)
      • GIT (1)
    • Util (9)
      • BIRT (2)
      • JMeter (3)
      • MobaXterm Personal (1)
      • ClipReport (2)
    • 이클립스 설정 (10)
      • SVN (1)
    • 업무중 기록해둘 것들... (1)
    • 영화 (8)
    • etc.. (197)
      • 여행 (25)
      • 문화생활 (3)
      • tistory (3)
      • 글, 생각 (4)
      • 먹을 곳 (29)
      • issue (4)
      • 결혼 (1)
      • 가족여행기록 (1)
      • Tip (50)
      • 강아지 (5)
      • 일기 (0)
      • 게임 (3)
      • 주식 (7)
      • 코로나19 (7)
      • 맥북 (5)
    • 비공개 (0)
      • 보나 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 제주도
  • 해지
  • 합정
  • 이클립스
  • 윈도우10
  • 인텔리제이
  • 포켓몬고
  • PostgreSQL
  • 맛집
  • 백준
  • 카페
  • Java
  • VSCode
  • tomcat
  • 연천
  • 설치
  • target
  • IntelliJ
  • 삼성증권
  • 리눅스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
- 광속거북이 -
Spring_Aop_Anno2
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.