GAWON 2023. 7. 6. 18:34
1. AOP (Aspect Oriented Programming)
	- 관점 지향 프로그래밍이라고 불린다.
	- 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어
	  그 관점을 기준으로 각각 모듈화 한다.
	- 관점	> 파라미터는 올바르게 들어왔는가?
			> 작업을 하는 사용자가 적절한 권한을 가졌는가?
			> 작업에서 발생할 모든 예외는 어떻게 처리하는가?
		ex) log.info() 등 로그를 작성하는 일은 반복적으로 하지만 핵심 기능은 아니다.
			따라서 관심사로 간주할 수 있다.
	- 주로 Java API를 이용한다.
			
	1) 주요 개념
		(1) Aspect : 관심사를 모듈화 한 것, 주로 부가기능을 모듈화한다.
		(2) Target : Aspect를 적용하는 곳(클래스, 메소드 등)
		(3) Advice : 실제 작업. 부가기능을 담은 구현체
		(4) JoinPoint : Advice가 적용될 위치.
		(5) PointCut : JoinPoint의 상세한 스펙을 정의