Spring
- AOP
AOP(Aspect Oriented Programming)은 부가기능과 핵심기능의 관점(관심)이 다르다는 점에 집중해서 핵심기능과 부가기능을 분리하여 설계, 개발하는 것이다. 부가기능을 모듈화하여 핵심기능에 붙여준다고 생각하면 된다.
UserService PostService
before() before()
getUser() getPost()
after() after()
이런 식으로 각각 서비스의 조회 메소드가 실행된다 할 때 핵심기능인 get~~()는 제쳐두고
핵심기능 전후에 호출되는 before after 메소드는 공통으로 관리하자는 것이다.
가로 영역을 잘라내어 생각한다고 해서 AOP를 크로스 커팅 이라고 부르기도 한다.
AOP는 공통으로 쓰이는 반복되는 부가기능들을 하나로 관리하여 재사용하자는 것이며
OOP는 비즈니스 로직의 모듈화, AOP는 부가기능(로그, 오류 처리, 캐싱 등등)의 모듈화이다.
스프링에서는 런타임 시점에 AOP를 적용한다. 이 방식은 클래스 로더에 올라간 빈에만 적용할 수 있다는 단점이 있지만 복잡한 옵션이나 특별한 컴파일러 없이도 가능하다는 장점이 있다고 한다.
각종 용어들
Advice: 부가기능 로직을 정의하는 곳.(부가기능 구현 + Pointcut의 전, 후, 전후 모두 적용할 지..)
Pointcut: Advice가 적용될 위치(어떤 컨트롤러의 어떤 메소드에 적용할 건지..)
Aspect: Advice와 pointcut들을 모듈화 한 단위. @Aspect가 Bean 클래스에만 적용이 가능하므로 @Component도 해줘야함.
AOP 동작방식
Spring이 프록시 객체를 중간에 삽입해 준다. 호출되는 메소드의 input, output은 변동이 없다.
알고리즘
- 프로그래머스 : 방문 길이(Level 2, 구현)
느낀 점
.
'TIL' 카테고리의 다른 글
[23.12.01] (0) | 2023.12.04 |
---|---|
[23.11.30] (1) | 2023.12.01 |
[23.11.28] (0) | 2023.11.28 |
[23.11.22] (1) | 2023.11.22 |
[23.11.21] (0) | 2023.11.21 |