스프링의 4대 특징에는 다음 4가지가 있다.
1. 제어역행(I.O.C) 지원하여 필요에 따라 스프링이 사용자 코드를 호출 (내가 요청하지 않아도 알아서 해주는 것)
2. 의존성 주입(D.I) 을 지원하여 느슨한 결합을 유지 (@Auto.. @Value 등 으로 선언해서 하나씩 객체화를 하는 것이 아닌 한번 선언해두고 사용하는 것)
3. Spring Framework 에서 객체 자원을 효율적으로 관리해준다. (@Auto.. 처럼 하나만 선언 = 싱글톤 패턴을 활용한다.)
4. AOP 을 지원한다.
이 중 AOP를 살펴보려고 한다
(인터셉터, ASPECT-J 두가지가 있다.)
관점 지향형 프로그램으로,
즉 하나의 흐름에 특정한 시점에 수행되는 프로그램을 만드는 것이다.
예를들어 지하철에 무임승차가 너무 많아 무임승차 근절을 위한 의견 중
1. 지하철에 사람이 내리면 그 사람 당 직원 한명씩 붙여서 돈을 내는지 안내는지를 확인하자는 의견과
2. 개찰구를 만들어 2번만 확인하자는 의견이 있었다.
이 중 2번이 AOP를 활용한 것이다!
스프링 시큐리티 : 시큐리티는 로그인 말고도 여러개를 검사한다. (ip, 데이터, 파라미터 등등..)
AOP에는 2가지 상황이 있다.
1번 방식을 preHendler 이라고 한다. (컨트롤러 앞에서 한다.)
2번 방식을 postHandler 이라고 한다. (컨트롤러 뒤에서 한다.)
이 두개를 사용한 것을 Interceptor 라고 한다.
(Interceptor 관련 내용은 다른 포스트 활용!)