W4D5 - SpringBootPart2

Onni·2021년 9월 3일
0

TIL

목록 보기
10/21
post-thumbnail

관점지향 프로그래밍(AOP)

  • 핵심기능과 공통기능을 분리
  • Cross Cutting Concerns : 비즈니스 로직에 공통된 기능이 있을 수 밖에 없음


로그인, 트랜잭션 관리, 보안등은 공통된 관심사이므로 분리 할 수 있음

-AOP 적용 방법
- 컴파일 시점 : 공통구현기능을 소스에 삽입
- 클래스 로딩 시점 : 클래스를 로딩할때 바이트코드에 부가기능 추가
- 런타임 시점 : 프록시를 이용 , 스프링에서 제공하는 AOP
(런타임 :이미클래스가 컴파일 되어지고 클래스가 로드 되어진고 객체가 만드렁짐
그 객체에 프록시 객체를 만듦 )

1. SPring AOP

  • JDK Proxy ( interfae based)

  • CGLib Proxy ( class based )

  • Dependency 추가

    org.springframework.boot
    spring-boot-starter-aop

      

1-1 AOP 주요 용어

타겟(Target)
핵심 기능을 담고 있는 모듈로서 부가기능을 부여할 대상
조인포인트(Join Point)
어드바이스가 적용될 수 있는 위치
타겟 객체가 구현한 인터페이스의 모든 메서드
포인트 컷(Pointcut)
어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식
여러 조인트포인트 중에 어디에 부가기능을 부여해줄지 나타내 줌
포인트컷 표현식은 execution으로 시작하고 메서드의 Signature를 비교하는 방법을 주로
이용함
애스펙트(Aspect)
애스펙트 = 어드바이스 + 포인트컷
Spring에서는 Aspect를 빈으로 등록해서 사용합니다.
어드바이스(Advice)
https://mossgreen.github.io/Spring-Certification-Spring-AOP/
AOP 시작하기 8
어드바이스는 타겟의 특정 조인트포인트에 제공할 부가기능
Advice에는 다음 그림과 같이 @Before, @After, @Around., @AfterReturning,
@AfterThrowing 등이 있습니다.
위빙(Weaving)
타겟의 조인 포인트에 어드바이즈를 적용하는 과정

스프링 Aop는 등록된 빈객체에 대해서만 적용가능

1-2 execution PCD

1-3 Annotation 적용하기

(1) 시간에 관련된 어노테이션 TrackTime 생성

(2) 어노테이션이 붙은 곳에 로직이 동작하게 수정

(3) 실제 레포지토리에 어노테이션 붙이기

(4) 테스트

  • 레포지토리에 @TrackTime 이 붙어있기 때문에 제대로 동작
    만약에 붙어 있지 않다면 동작하지 않음

2. Spring Transaction 관리

(1)

  • CustomerNamedJdbcRepository에 트랜잭션매니저를 추가하여 커밋과 롤백 제어 (생성자에서 주입받음)
  • 트랜잭션 테스트를 위한 코드 작성

(2) 테스트

  • PlatformTransactionManager을 빈으로 등록

2-2 Transaction Templete 이용

(1) CustomerNamedJdbcRepository에 트랜잭션템플릿를 추가

(2) 템플릿을 적용시키기 위해 transactionTemplate를 빈으로등록 후 테스트

2-3 @Transaction

-이전에 TransactionManager/ TransactionTempelete를 이용해 API 호출해 가면서 구현

profile
꿈꿈

0개의 댓글