복습공부 이론

Spring AOP 에 대하여

alsdnr6672 2024. 10. 14. 09:07



### 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