본문 바로가기
Programming/Java

[petclinic] AOP 소개

by minux_s 2020. 11. 28.
728x90

스프링은 크게 IOC AOP PSA, 이 3가지 개념을 제공해주는 스프링 트라이앵글이라는 개념이 있다.

AOP 는 aspect oriant program

ex)

class A{
     method a () {
          AAAA
          오늘은 7월4일 미국 독립 기념일
          BBBB
}

class B{
     method b () {
          AAAA
          오늘은 아침운동
          BBBB
}

 

이렇게 똑같은 코든데 흩어진거의 문제는 뭔가 바꿔야할 때 다 찾아가서 바꿔야한다.

공통적인 코드를 모아놓자!

 

class AAAABBB{
     method aaaabbb(JoinPoint point){
          AAAA
          point.execute()
          BBB
    }
 }

 

이런게 AOP

petclinic에서는 @Transactional(readOnly = true), 이게 스프링AOP 기반으로 만들어진 어노테이션.

코드가 없는데도 코드가 있는 것처럼 코딩을 할 수 있게 해줌.

 

AOP 구현방법 3가지

1) 컴파일

A.java 를 컴파일하면 -> (AOP) -> A.class 생성되는데, 이 중간에 AOP를 넣는다.

자바 코드에는 stopwatch가 없지만 컴파일 한 코드에는 stopwatch코드가 들어간 것 처럼 컴파일을 해주는 독특한 컴파일러가 있다 (aspectJ)

 

2)바이트코드 조작

A.java - > A.class 만들고 A.class 사용할 때, 이 런타임에서 A라는 클래스를 클래스로더가 이 클래스를 읽어서 메모리에 올릴 때 조작함. 

A.java - > A.class ---(AOP)---메모리(AspectJ)

 

3) 프록시 패턴 (스프링 AOP가 사용)

 

728x90

'Programming > Java' 카테고리의 다른 글

[Spring Framework] IOC Container  (0) 2020.12.06
[Spring Framework] AutoWired  (0) 2020.12.06
[Spring Framework] 스프링 소개  (0) 2020.12.02
[petclinic] PSA  (0) 2020.11.28
[petclinic] maven surfire 오류 해결 방법  (0) 2020.11.22

댓글