일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 정보처리기사
- Spring
- 수경재배
- 스프링AOP
- 정보처리기사 합격
- 싱고니움
- 자바
- 개발 공부
- 정처기
- 어피티 독자
- 식물키우기
- 정보처리기사 공부
- 식물
- 아보카도키우기
- 오프라인 소모임
- 식물 키우기
- 정처기 공부
- 어피티 7월 북클럽
- AOP
- 삼색달개비
- 북클럼
- 아보카도 키우기
- 정처기 실기
- 정보처리기사 실기
- 스프링
- js
- 시나공
- 달개비
- springAOP
- 아보카도
- Today
- Total
deblog
AOP(Aspect Oriented Programming)란?(1) 본문
AOP(관점 지향적인 프로그래밍)
문제를 바라보는 관점을 기준으로 프로그래밍하는 기법을 말한다.
아래와 같은 부가 기능을 처리할 때, 활용된다.
AOP의 역할
AOP는 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통 모듈사항을 기준으로 프로그래밍 함으로써
공통모듈을 여러 코드에 쉽게 적용할 수 있도록 도와주는 역할을 합니다.
AOP 주요용어
1. Aspect : 여러객체에 공통으로 적용되는 기능
2. JoinPoint : Advice를 적용 가능한 지점을 의미. 메서드 호출, 필드 값 변경
3. Advice : 언제 공통 관심 기능을 핵심로직에 적용할 지를 정의
4. Pointcut : JoinPoint의 부분집합
5. Weaving : Advice를 핵심 로직 코드에 적용
Adivce의 종류
Before : 주 업무 이전에 처리할 필요가 있는 부가 작업처리
- 적용 예시 : <aop:before> @Before
After Returning : 주 업무 이전에 처리해야할 필요가 있는 부가 작업 처리
- 적용 예시 : <aop:after-returning> @AfterReturning
After Throwing : 예외가 발생한 경우, 그 예외를 어떻게 처리해야 하는지에 대한 공통처리 모듈 작성
- 적용 예시 : <aop:after-throwing> @AfterThrowing
Around : 주 업무 시작과 마지막 부분에 처리해야할 필요가 있는 부가 작업을 처리
- 적용 예시 : <aop:around> @Around
Aspect의 Poincut 표현식
execution 명시자
- execution(수식패턴?리턴타입패턴 클래스이름 패턴? 메서드이름 패턴(파라미터 패턴))
- exection(public void set*(..)) : 리턴타입이 void이고, 이름이 set으로 시작하고, 파라미터가 0개 이상인 메서드 호출
- execution(* void set*(..)) :
- 메서드 set으로 시작, 파라미터가 0개이상
- execution(* net..*.get*(*,*)) :
- net 하위 패키지에 있는 get으로 시작하는 2개의 파라미터 메서드 호출
within 명시자
특정 타입에 속하는 메서드를 piontcut으로 설정
- withon(net.pri.Service)
- within(.vo..*) : 패키지명이 vo가 들어가고 하위에 있는 모든 클래스
bean 명시자
명시자 스프링에서 추가적으로 제공하는 명시자 bean(*Service)
JdkRegexpMethodPointcut
pattern / patterns 프로퍼티를 통해 Pointcut 메서드 패턴을 정규표현식으로 설정
- <property name="pattern" value=".*someWord.*"/> : someWord메서드 포함된 호출
pointcut의 조합
표현식1&&표현식2, 표현식1||표현식2
@Order(적용순서)
프락시 서버 호출
'IT > JAVA' 카테고리의 다른 글
heap과 stack의 차이점은? (0) | 2021.04.28 |
---|---|
오버라이딩과 오버로딩의 차이 (2) | 2021.04.28 |
AOP(Aspect Oriented Programming) 실습(3) (0) | 2021.04.17 |
AOP(Aspect Oriented Programming) 구현(2) (0) | 2021.04.17 |
full-calendar라이브러리에 DB연동 (8) | 2021.03.30 |