Java 기반의 오픈소스 Back-End 프레임워크
Spring이라고 지어진 이유? spring은 봄으로, 개발자에게 겨울은 끝나고 봄이 왔다는 의미에서 지어진 이름
DI란 개발자가 Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것을 의미함
객체간 결합이 느슨해지면 코드의 재사용성이 증가하고, 단위 테스트가 용이해짐
전통적인 프로그래밍에서는 개발자가 작성한 프로그램이 외부 라이브러리의 코드를 호출해서 이용했지만, 제어의 역전은 이와 반대로 외부 라이브러리 코드가 개발자의 코드를 호출함. 즉, 제어권이 프레임워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출.
AOP는 관점 지향 프로그래밍으로, 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하는 것을 의미. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말함
핵심적인 관점 : 우리가 적용하고자 하는 핵심 비즈니스 로직
부가적인 관점 : 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등
흩어진 관심사(Crosscutting Concerns) : 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드
흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하는 것이 AOP의 취지