Spring AOP
1. 프록시 기반 :
Spring AOP 는 주로 프록시 기반의 AOP 구현을 제공함.
대상 객체에 대한 프록시를 생성하고, 해당 프록시를 통해 메서드 호출을 가로채는 방식.
2. 런타임 위빙 :
Spring AOP는 런타임 위빙을 사용합니다. 어플리케이션 실행 중에 AOP가 적용됨.
3. 적용 범위 :
Spring AOP는 메서드 실행에 대한 Join Point에만 적용됨.
생성자 호출, 필드 접근, static메서드 호출등은 조인 포인트로 고려되지 않음.
4. Spring 통합 :
Spring 프레임워크와 긴밀하게 통합되어 있음,
Spring Container에 의해 관리되는 빈에만 적용할 수 있음.
5. JAVA 기반 : 순수 JAVA만으로 구현이 되어있음
6. 속도 : AspectJ에 비해 훨씬 느리다.
AspectJ
1. 컴파일 타임 위빙 OR 런타임 위빙 : 보통 컴파일 타임 위빙을 많이 쓰지만, 둘 다 지원함.
2. 넓은 조인 포인트 모델 : AspectJ는 메서드 호출, 생성자 호출, 필드 접근, static 초기화를 포함하여 더 넓은 범위의 조인 포인트를 제공함.
3. 속도 : aspect를 컴파일시에 프로그램의 바이트 코드에 직접 삽입하기 때문에, 런타임에 추가적인 처리 비용이 들지 않는다. 이 때문에 실행시간에 대해 오버헤드가 적어서 AOP에 비해 빠르다.
4. 독립적임 :
Spring에 종속되지 않고, 독립적으로 사용할 수 있는 프레임워크.
=>
이러한 점들에 따라,
프로젝트가 대규모이고, 복잡한 시스템이라면 속도면에서 이점이 있는 AspectJ를 주로 사용한다고 함.
작은 규모의 프로젝트라면, Spring Framework를 사용하는 경우 Spring AOP를 사용하는 것이 좋음
- advise : 특정 joinpoint에 추가적인 동작을 적용한다는 것을 의미함
=> 원래의 로직에 부가적인 로직을 끼워넣는 작업을 가리킴
'Spring' 카테고리의 다른 글
스프링 배치 - Job / Step (0) | 2024.06.05 |
---|---|
Spring Batch - 개요, 도메인 이해 (0) | 2024.05.26 |
Weaving (0) | 2023.11.21 |
RequestContextHolder (0) | 2023.11.04 |
Reactive Programming & Spring Webflux (0) | 2023.10.30 |