### 1. AOP의 주요 개념
- **Aspect**: 공통 관심사를 모듈화한 것입니다. 예를 들어, 로깅이나 보안 같은 기능이 이에 해당합니다.
- **Join Point**: AOP가 적용될 수 있는 지점으로, 메서드 호출, 객체 생성 등이 포함됩니다.
- **Pointcut**: 어떤 Join Point에 Aspect를 적용할지를 정의하는 표현식입니다.
- **Advice**: Aspect가 적용되는 방식으로, 특정 Join Point에서 실행될 코드입니다. 종류에는 `Before`, `After`, `Around`, `AfterReturning`, `AfterThrowing` 등이 있습니다.
- **Weaving**: Aspect를 애플리케이션 코드에 적용하는 과정으로, 컴파일 시, 로드 시, 런타임 시에 이루어질 수 있습니다.
### 2. AOP의 구성 요소
- **AspectJ**: Java에서 AOP를 구현하기 위한 강력한 프레임워크로, 스프링 AOP는 AspectJ의 개념을 활용합니다.
- **Proxy**: 스프링 AOP는 기본적으로 프록시 패턴을 사용하여 Aspect를 적용합니다. 이로 인해 기존 객체에 영향을 주지 않으면서 기능을 추가할 수 있습니다.
- **Configuration**: AOP 설정은 XML 파일이나 Java Config를 통해 이루어질 수 있습니다.
### 3. AOP의 사용 예
1. **로깅**: 메서드 실행 전후에 로그를 남기는 기능을 구현할 수 있습니다.
2. **트랜잭션 관리**: 데이터베이스 작업을 수행하는 메서드에 트랜잭션을 적용할 수 있습니다.
3. **보안**: 특정 메서드에 접근 권한을 체크하는 로직을 추가할 수 있습니다.
### 4. AOP 설정 예시
#### XML 기반 설정
```xml
<aop:aspectj-autoproxy/>
<bean id="loggingAspect" class="com.example.LoggingAspect"/>
```
#### Java Config 기반 설정
```java
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {
@Bean
public LoggingAspect loggingAspect() {
return new LoggingAspect();
}
}
```
### 5. 결론
Spring AOP는 애플리케이션의 공통 관심사를 효과적으로 관리할 수 있는 강력한 도구입니다. 이를 통해 코드의 중복을 줄이고, 유지보수를 쉽게 할 수 있습니다. AOP를 적절히 활용하여 애플리케이션의 품질을 높이는 데 기여할 수 있습니다.
'복습공부 이론' 카테고리의 다른 글
JSP (0) | 2024.09.30 |
---|---|
서블릿과 JSP의 차이점 (0) | 2024.09.30 |
Servlet 종류 (1) | 2024.09.30 |
Servlet (0) | 2024.09.30 |
관계형 데이터베이스(RDB) (1) | 2024.09.30 |