본문 바로가기
🌈 백엔드/스프링 프레임워크

스프링_AOP

by 개발자 알마 2023. 6. 27.
반응형

 

 

[1] AOP


(1) AOP 정의

관점 지향 프로그래밍 

여러 객체, 메서드에 공통적으로 적용할수 있는 기능을 따로 정의한다

핵심 코드 기능이 아닌 부가 코드 기능 (advice)를 동적으로 추가해주는 기술 

코드가 실행되는 과정 중에서 코드가 추가되어 실행된다 

자동으로 추가되는 코드는 메서드의 맨앞 또는 맨뒤에 추가할수 있다. 

 

(2) AOP 목적 

스프링의 AOP는 AspectJ 문법으로 작성한다 

 

1. 비지니스 로직 코드 개발

2. 코드의 수정 최소화

3. 유지보수 

 

(3) AOP 생성 과정 

 

 

 

 

용어 설명
target advice가 추가될 객체
advice target에 동적으로 추가될 부가기능을 가진 코드
weaving target에 advice를 추가해서 proxy를 생성하는 동작
proxy target에 advice가 동적으로 추가되어 생성된 객체 
join point advice가 추가될 대상의 메서드 
pointcut join point들을 정의한 패턴 

 

(4) 부가기능 코드 Advice 종류  

Advice 설정은 xml Ehsms 애너테이션으로 할수 있다

 

around advice @Around 메서드의 시작과 끝 부분에 추가된다 
before advice @Before 메서드의 시작 부분에 추가된다
after addvice @After 메서드의 끝 부분에 추가된다
after returning @AfterReturning 예외 발생안되면 실행된다 
after throwing  @AfterThrowing 예외 발생시 실행된다 

 

(5) pointcut expression 패턴 

execution(반환타입 패키지명. 클래스명.메서드명(매개변수목록)

 

(6) AOP 준비 

 

maven에서 아래 3가지를 pom.xml에 추가한다. 

 

https://mvnrepository.com/artifact/org.springframework/spring-aop/6.0.11

 

 

 

[2] AOP 분리 방법 


(1) 공통 분리  

 

 

 

(2) 패턴 + 공통 분리 

Pattern 을 사용하여 허용되는 메서드만 공통적으로 적용될수 있도록 설정한다

 

(2) Transactional + 공통 분리 

Pattern 대신 Transational 을 사용할수 있다.  

 

 

[3] AOP 실습


(1) aop:aspectj-autoproxy 추가 

root-context.xml 파일에 추가 

 

(2) 부가기능 설정 

 

 

(2)핵심기능 설정 

 

 

(4) 실행문

반응형

댓글