본문 바로가기
SpringBoot

Spring AOP

by ByteBridge 2020. 12. 6.
반응형

관점 지향 프로그램

예: 보안 관련된 관심사, API 성능로깅, 트랜잭션 관리,요청 로깅 등

Aspect: 관심사를 모듈화 한것이다.

여러 클래스에 걸쳐 코드를 분산하는 대신 관심사를 다루는 로직을 하나의 Aspect 에 넣는다.

예: isValidatedMember() 와 같이 검증 메서드를 여러 클래스에 초기 진입부에서 검증 스프링에서 클래스에 Aspect 를 구현 할 수 있으며, @Aspect 어노테이션을 적용 할수있다.

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

AOP 적용 전:

classDemoA -> methodDemoA( isValidatedMemebr() )

classDemoB -> methodDemoB( isValidatedMemebr() )

classDemoA -> methodDemoC( isValidatedMemebr() )

...

수십 혹은 수백개의 클래스와 메서드가 위와 같이 동일하게 있고, 해당 메서드에 검증 로직을 넣는다고 가정.

한 두개 의 검증 이 필요한 지점이 있을 경우에는 괜찮아 보일 수있으나,

몇십개 , 몇백개의 동일한 상황이 존재 한다고 가정 할 경우 엄청난 반복 작업과,

불필요한 코드가 증가 할 수 있다.

이를 해결 하기위한 방법중의 하나는 AOP 를 적용 하는것이다.

AOP 구현:

@Aspect

@Component

public class ValidateMemberChecker{ }

위와 같이 AOP 를 구현하여 특정 메서드가 실행 되는 지점에 aop 에서 적용한 로직을 수행 하게 되면,

불필요한 중복 코드를 줄이고, 한 곳에서 로직 및 관리를 진행 할 수 있게 된다.

JoinPoint: 특정 프로그램이 실행되는 지점.

Advice: AOP 클래스 내의 method,어드바이스는 특정 관심사를 처리하는 행동이다.

PointCut: 일치하는 여러 조인 포인트를 결합 한것.

 

 

자연애농산 탱글탱글 맛좋은 대추방울토마토 3kg, 대추방울토마토 3kg - 4번과
반응형

'SpringBoot' 카테고리의 다른 글

LocalDateTime hour step  (0) 2021.10.31
ModelMapper 를 사용하여 객체 컨버팅 하기  (0) 2021.05.23
spring factory pattern  (0) 2020.10.19
spring webflux swagger config  (0) 2020.08.31
React Stream create and test  (0) 2020.08.24