26강(AOP 적용)

2022. 12. 18. 23:07개발/spring1

Aspect Oriented Programming, 공통 관심 사항과 핵심 관심 사항 분리. 원하는 곳에 공통 관심 사항 적용

 

TImeTraceAop(시간 측정 로직)을 만들고 컨트롤러, 서비스, 리포지토리 원하는 곳에 공통 관심 사항이 적용 가능하다.

 

 

요기에 파일 하나 만들어주자.

 

 

이걸 하나 적어줘야 Aop로 있다.

이제 메뉴얼 보고 따라하자.

 

 

인라인으로 합체

 

 

 

깔끔

 

 

이렇게 TimeTraceAop 완성이다. 이걸 이제 스프링 빈에 등록하자.

 

 

근데 강의에선 그냥 @Component로 한단다.

 

@Around를 사용해서 타게팅을 해준다. 문법이 있는데 매뉴얼 보고하면 어렵지 않다고 한다..

이제 패키지명 밑에 있는 클래스 명, 파라미터 타입 등등 원하는 조건을 넣을 있음. 이거는 이제 패키지 하위에 있는거에는 전부 적용하는 것임.

 

 

이렇게 뜬다.

 

이제 회원가입, 회원 조회 핵심 관심사항과 시간을 측정하는 공통 관심 사항을 분리했다.

시간 측정하는 로직을 별도의 공통 로직으로 만들었고 핵심 관심 사항을 깔끔하게 유지할 있다.

변경이 필요하면 로직만 변경하면 되고 원하는 적용 대상을 선택할 있게 됐다.

 

@Around 어떻게 쓰는지는 검색하면 나온다고

 

Aop 동작하는 방법

 

스프링 컨테이너에 등록될 진짜 스프링 말고 가짜 스프링 빈인 프록시를 만들어내서 프록시가 끝나면 joinPoint.proceed()해서 내부적으로 이것저것 타서 그때 진짜 스프링 빈을 호출해준다. 그래서 헬로 컨트롤러가 호출하는 진짜가 아니라 프록시라는 기술이 만들어낸 가짜다.

'개발 > spring1' 카테고리의 다른 글

25강(AOP가 필요한 상황)  (0) 2022.12.16
24강(스프링 데이터 JPA)  (0) 2022.12.15
23강(JPA)  (0) 2022.12.14
22강(스프링 JdbcTemplate)  (0) 2022.12.14
21강(스프링 통합 테스트)  (0) 2022.12.13