일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 보석쇼핑
- 중반부
- 투포인터
- 1편
- Smilegate
- 알고리즘
- 카카오
- LIS #Algorithm #요소추적
- Algorithm
- 유니온파인드
- 식단
- Union-find
- 코테
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 백준
- 스마일게이트
- BaekJoon
- 카카오인턴
- 소감
- 삼성 #코테 #2020상반기 #c++
- 코딩테스트
- 서버개발캠프
- BFS
- c++
- Today
- Total
짱아의 개발 기록장
9강. AOP 본문
Spring은 크게 IoC, AOP, PSA 3가지의 개념을 제공해준다.
이 개념은 Spring의 Triangle이라고 부른다.
* AOP(Aspect Oriented Programming) = 흩어진 코드를 한 곳으로 모아
ex)
class A {
method a () {
AAAA->AAA
오늘은 치킨을 먹는 날이에요.
BBBB->BB
}
method b () {
AAAA->AAA
오늘은 달콤한 디저트를 먹는 날이에요.
BBBB->BB
}
}
class B {
method c () {
AAAA->AAA
오늘은 그냥 너무 우울한 날이어서 불닭을 먹을 거에요.
BBBB->BB
}
}
같은 클래스 다른 메소드, 다른 클래스 다른 메소드에서
똑같은 일을 반복하는 AAAA가 AAA로 바뀌어야 한다면???
AAAA라는 동작을 하는 모든 메소드, 클래스에서 다 AAA로 일일히 바꿔줘야 한다....(매우 귀찮, 복잡;;)
모아놓은 AAAA와 BBBB
class A {
method a () {
오늘은 치킨을 먹는 날이에요.
}
method b () {
오늘은 달콤한 디저트를 먹는 날이에요.
}
}
class B {
method c () {
오늘은 그냥 너무 우울한 날이어서 불닭을 먹을 거에요.
}
}
class AAAABBBB {
method aaaabbbb(JoinPoint point) {
AAAA
point.execute()
BBBB
}
}
// AAAA와 BBBB동작을 별도의 클래스, 별도의 메소드로 빼놓은 것이다.
*대표적으로, 프로젝트에서는 다음과 같은 AOP가 일어난다.
@Transactional으로 명시된 곳이 대표적으로 AOP가 일어나는 곳이다,
다양한 AOP 구현 방법
- 컴파일
- 바이트코드 조작
- 프록시 패턴
1. 컴파일
A.java ------->(AOP)------> A.class (AspectJ)
A.java파일을 컴파일하는 과정에서 AOP를 해주는 것을 의미한다.
컴파일을 하는 과정에서 원하는 원하는 코드가 자동적으로 주입되는?
2. 바이트코드 조작
A.java ---------> A.class ------>(AOP)-----> 메모리 (AspectJ)
A.java파일을 컴파일을 하면 A.class가 만들어지는데, 이때 class loader가 A.class를 읽어와서 메모리상에 올리게 된다,
메모리 상에 올릴때 AOP를 해주는 것이다.
즉, 메모리상에 올리는 과정에서 원하는 코드가 자동적으로 주입되는?
3. 프록시 패턴
다음 강에 더 자세하게 다루신다고 한다! 고고~
'개발 프로젝트 정리 > [예제로 배우는 스프링 입문] 백기선님 강의 정리' 카테고리의 다른 글
11강. 스프링 @AOP (0) | 2021.01.15 |
---|---|
10강. 프록시 패턴 (0) | 2021.01.12 |
8강. 의존성 주입(Dependency Injection) (0) | 2021.01.04 |
7강. 빈(Bean) (0) | 2021.01.02 |
6강. IoC 컨테이너 (0) | 2020.12.30 |