반응형
AOP (Aspect Oriented Programming)
- 관점지향 프로그램
- 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다.
- AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을 발견할 수 있는 데 이것을 흩어진 관심사 (Crosscutting Concerns)라 부른다.
- 흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 취지다.
- 스프링 어플리케이션은 특별한 경우를 제외하고는 MVC 웹 어플리케이션에서는 Web Layer, Business Layer, Data Layer로 정의한다.
- Web Layer : REST API를 제공하며, Client 중심의 로직 적용
- Business Layer : 내부 정책에 따른 logic을 개발한다.
- Data Layer : 데이터 베이스 및 외부와의 연동을 처리한다.
관련 어노테이션
@Aspect : 자바에서 널리 사용하는 AOP프레임워크에 포함되며, AOP를 정의하는 Class에 할당
@Pointcut : 기능을 어디에 적용시킬지, 메소드, 어노테이션 등 AOP를 적용 시킬 지점을 설정
@Before : 메소드 실행하기 이전
@After : 메소드가 성공적으로 실행 후, 예외가 발생 되더라도 실행
@AfterReturing : 메소드 호출 성공 실행시 (Not Throws)
@AfterThrowing : 메소드 호출 실패 예외 발생 (Throws)
@Around : before / after 모두 제어
@Component와 @Bean의 차이
@Component는 클래스 단위로 빈으로 만들어 관리
@Bean은 메소드 등에서 사용된다.
반응형
'Spring' 카테고리의 다른 글
[Spring] Filter & Interceptor + 비동기 (0) | 2022.08.12 |
---|---|
[Spring] Validation & Exception 처리 (0) | 2022.08.12 |
[Spring] IoC (제어 역전) / DI (의존성 주입) (0) | 2022.08.09 |
[Spring] Object Mapper (0) | 2022.08.09 |
[Spring] Response(응답) 내려주기 (0) | 2022.08.09 |
댓글