728x90
🤔SpringAOP 이란 ?💭
관점 지향 프로그래밍(Aspect Oriented Programming)
일반적으로 사용하는 클래스(Service, Dao 등) 에서 중복되는 공통 코드 부분(commit, rollback, log 처리) 을 별도의 영역으로 분리해 내고, 코드가 실행 되기 전이나 이 후의 시점에 해당 코드를 붙여 넣음으로써 소스 코드의 중복을 줄이고, 필요할 때마다 가져다 쓸 수 있게 객체화하는 기술을 말한다.
💬 SpringAOP 개요
* 위 이미지와 같이 공통되는 부분을 따로 빼내어 필요한 시점에 해당코드를 추가해주는 기술
💬 SpringAOP 구조
공통되는 부분을 따로 빼내어 작성하는 메소드를 Advice라고 이야기 하며,
Advice를 적용될 수 있는 모든 관점(시점, 메소드)을 JoinPoint,
JoinPoint 중 실제 Advice를 적용할 부분을 Pointcut
그리고 그 시점에 공통 코드를 끼워 넣는 작업을 Weaving 이라고 말한다.
“ Advice + Pointcut = Aspect “
실제로 동작 코드를 의미하는 Advice와
작성한 Advice가 실제로 적용된 메소드인 Pointcut을 합친 개념으로
부가기능(로깅, 보안, 트랜잭션 등)을 나타내는 공통 관심사에 대한 추상적인 명칭.
(여러 객체에 공통으로 적용되는 부가기능을 작성한 클래스 나타냄)
AOP 개념을 적용하면 핵심기능 코드 사이에 끼어있는 부가기능을 독립적인 요소로 구분해 낼 수 있고,
이렇게 구분된 부가기능 Aspect는 런타임 시에 필요한 위치에 동적으로 참여하게 할 수 있다.
💬 SpringAOP 핵심용어
💬 SpringAOP "Advice"용어 정리
💬 SpringAOP "JoinPoint"용어 정리
💬 SpringAOP 특징
- Spring은 프록시(Proxy) 기반 AOP를 지원한다.
- Proxy는 대상 객체의 호출을 가로챈다 (Intercept)
- Spring AOP는 메소드 조인 포인트만 지원한다.
💬 SpringAOP 설정방법
1) porm.xml -> AspectJ 내용 추가
2) servlet-context.xml -> 내용추가
3) server 설정 -> -Djava.net.preferIPv4Stack=true 내용추가
📗 porm.xml 설정
<!-- AspectJ : AOP 기능을 사용하기 위한 언어 문법 -->
<!-- aspectjrt : AspectJ 런타임 프로그램 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- AspectJ Weaver : aspect의 정보를 바탕으로 aspect를 구성한 코드를 생성하는데 필요한 유틸리티 프로그램 -->
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
📗 servlet - context.xml 설정
<!-- AOP Proxy를 이용한 관점 제어 자동화 -->
<aop:aspectj-autoproxy/>
📗 server 설정
728x90
'ON > spring' 카테고리의 다른 글
[ Spring ] 채팅 구현하기 - 이론편 ① (0) | 2023.09.04 |
---|---|
[ Spring ] SpringAOP 사용하기 ⑳ (0) | 2023.09.02 |
[ Spring ] @Scheduled 이용하기 ⑰ (0) | 2023.09.01 |
[ Spring ] @Scheduled 이론 ⑯ (0) | 2023.09.01 |
[ Spring ] 게시글 목록으로 이동 ⑮ (0) | 2023.08.31 |