aop는 Aspect Oriented Programming
Aspect -> Cross concern - > 횡단관심사/ 공통관심사
이것들의 의미하는 것은 핵심로직은 아니지만 선조건, 부가기능 등등을 cross concern이라고 한다.
db에서 close를 하면 내부적으로는 socket연결이 끊어지는것이다
근데 커넥션풀을 이용한다면 close를 하면 안되는건데 왜 autoclose를 할까?
프록시덕분에...
스프링은 AOP설정만 해주면 autoProxy해준다 <--스프링의 굉장한 장점
target은 original 객체 proxy class 는 프록시 객체
프록시객체를 자동으로 만들어주는것
aspect -> 지금부터 모든 서비스의 실행시간을 찍어(같은 명세(logging, 보안, 트랜젝션등..) 그래서 추상이라고 생각해도 된다)
advice -> 실제로 우리가 만들어낸 코드(로거를 찍거나 하는것)
pointcut -> 그 객체라는 여러개의 메소드중에 어떤 메소드에 advice를 적용할것인지 찍어주는게 pointcut이다
aop를 이용하기위해선
위버와 aspectjrt 의존성을 취가해야한다 (대신 라이브러리의 버전을 똑같이 맞춰주어야 한다)