(OOP를 극강의 OOP로 만든게 AOP => 완전 OOP이다.)
실제 비즈니스 로직과 공통적으로 처리할 로직을 분리해놨다가 필요한때에 적시적기에 사용할 수 있도록 하는 것으로, 트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 적용되는데, 이런 코드들을 실제 비지니스 로직과 분리한다.한때, AOP가 OOP(Object Oriented Programming)를 대체하는 기술로 생각되기도 했지만, 실제로 AOP는 OOP를 더욱 OOP스럽게 보완해 주는 기술이다.
컨트롤의 제어권이 개발자가 아니라 프레임워크에 있으며, 객체의 생성부터 모든 생명주기의 관리까지 객체의 제어권이 바뀐 것을 의미한다. 객체를 생성하고, 직접 호출하는 자바프로그램이 아니라, 만들어둔 자원을 프레임워크에서 호출해서 사용한다.
이는 객체간의 의존관계를 관리하는 기술로, 어떤 객체가 필요로 하는 객체를 자기 자신이 직접 생성하는 것이 아니라, 외부에 있는 다른곳에서 자신이 필요로 하는 객체를 주입받는 것이다.
일반적인 J2EE 프레임워크에 비해 특정 라이브러리를 사용할 필요가 없어서 개발이 쉬우며, 기존 라이브러리의 지원이 용이하다.
소프트웨어 디자인 패턴 중 하나. Model, View, Controller의 약자로 하나의 애플리케이션, 프로젝트를 구성할 때 요소를 세가지의 역할로 구분한 패턴이다.
설계가 간단하여 작은 프로젝트에 적합하며 개발 속도가 빠른 대신 코드가 복잡해져 유지 보수가 어렵다.
비교적 큰 프로젝트에 적합하고 설계 단계에서 비용이 많이 들어 개발 속도가 느린 단점이 있지만 확장에 용이하고 유지보수가 수월
MVC2의 발전된 형태
1. 클라이언트의 요청을 FrontController인 DispatcherServlet이 받는다.
2. HanlderMapping을 통해 요청에 해당하는 Controller를 실행한다.
3. Controller는 적절한 서비스 객체 호출
4. Service는 DB 처리를 위해 DAO를 이용하여 데이터 요청
5. DAO는 mybatis를 이용하는 Mapper를 통해 작업 처리
6. 처리된 결과가 Controller로 전달
7. View Resolver를 통해 결과를 받을 View를 찾아서 전달
8. View는 전달 받은 결과를 다시 DispatcherServlet에게 전달
9. DispatcherServlet은 클라이언트에게 전달
SpringMVC 사용 시 Component Scan, DispatcherServelt, View Resolver, jar등 복잡한 설정을 간단하게 만들어 준 것
스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 정말 편하게 스프링을 활용할 수 있도록 한다.
Spring Boot Starter Dependency만 추가해주면 바로 API를 정의하고 내장된 톰캣이나 제티로 웹 애플리케이션 서버를 실행할 수 있음
Embed Tomcat을 사용 : Tomcat 별도 설치, 버전 관리 수고 X
starter을 통한 dependency 자동화 : 과거에는 각 dependency들의 호환되는 버전을 직접 맞추고 관리했어야했으나 이제는 start가 대부분의 dependency를 관리
XML 설정 X
jar file을 이용해 자바 옵션만으로 손쉽게 배포 가능