-
11 AOP의 개념과 용어Spring/02 Spring DI와 AOP 2023. 7. 7. 20:53반응형
AOP의 개념과 용어
1) 공통코드의 분리
1-1) 공통코드의 분리 (실습)
AopMain.java(com.fastcampus.ch3.aop 패키지에 작성)
>> 추가할 코드를 따로 분리해 작성해 놓고, 그 코드가 마치 추가된 것처럼 실행되는데 AOP
1-2) 공통코드의 분리 (응용1)
>> a로 시작하는 패턴의 메서드만 실행하게 된다
1-2) 공통코드의 분리 (응용2)
>> 에너테이션으로 출력
2) 코드를 자동으로 추가한다면 어디에?
- 메서드 중간에는 넣을 수 없다
>> Advice{ } : 자동 추가할 코드
>> Before Advice : 메서드의 시작에 자동 추가
>> After Advice : 메서드의 끝에 자동 추가 >> Around Advice : 양쪽에 자동 추가
3) AOP(Aspect Oriented Programming)란?
- 관점 지향 프로그램 or 횡단 관심사 or cross-cutting concerns?
- 부가기능(advice)을 동적으로 추가해주는 기술
- 메서드의 시작 또는 끝에 자동으로 코드(advice)를 추가
※동적: 코드가 실행중에 자동으로 추가되는 것
>> Customer Service, Sales, Ware House는 각각의 모듈이 달라도
Logging, Transaction, Security는 공통으로 사용된다 (횡단 관심사)
4) AOP 관련 용어
>> oop나 AOP의 목적은 변경에 유리한 코드를 만드는 것 (분리)
5) Advice의 종류
- Advice의 설정은 XML과 애너테이션, 두 가지 방법으로 가능
6) pointcut expression
- advice가 추가될 메서드를 지정하기 위한 패턴
execution(접근제어자(생략가능). 반환타입 패키지명. 클래스명. 메서드명(매개변수 목록))
>> @Before + @After = @Around
>> ProceedingJoinPoint pjp // 메서드의 모든 정보가 들어있다
①번의 getName( )은 메서드 이름, pjp.getArgs( )는 매개변수 // 메서드의 모든 정보를 제공
반환 타입은 Object
>> LogginAdivce가 여러개 적용되는 경우에는 @Order( ) 사용
ex) @Order(1) @Order(2) @Order(3) class LogginAdvice위에 사용됨
7) 실습
- AOP 기능을 사용하기 위해 관련 라이브러리 다운로드
pom.xml
>> maven repository에서 aspectjrt, spring-aop, aspectjweaver 다운
MyMath.java
root-context_aop.xml (webapp/WEB-INF/spring/root-context_aop.xml생성)
AopMain2.java
>> 출력 결과 확인
LoggingAdvice.java
>> @Component @Aspect @Around aop로 사용하기 위해 등록
AopMain2.java(변경)
>> add 메서드만 적용되어 출력되었다
반응형'Spring > 02 Spring DI와 AOP' 카테고리의 다른 글
13 서비스 계층의 분리와 @Transactional(2) (0) 2023.07.09 12 서비스 계층의 분리와 @Transactional(1) (0) 2023.07.08 10 Transaction, Commit, Rollback (0) 2023.07.05 09 DAO의 작성과 적용(2-2) (0) 2023.07.04 09 DAO의 작성과 적용(2-1) (0) 2023.07.03