프레임워크에 대한 설명은 해당 포스트를 참조해주세요.
스프링 프레임워크
는 자바 웹 애플리케이션을 개발하기 위한 오픈 소스 프레임워크입니다.
자바가 출시되고 20년이 훨씬 넘은 지금은 자바를 활용하기 위한 여러가지 기술(마이바티스, JSP 등)들이 등장했는데요. 스프링은 이러한 기술들을 편리하게 사용할 수 있도록 만들어주면서 중복 되는 코드를 줄이게 해주는 생산성 높은 프레임워크라고 할 수 있습니다.
스프링의 특징은 다음과 같습니다.
스프링이전에는 EJB(Enterprise JavaBeans)
라는 프레임워크를 사용했었는데요. 이 프레임워크가 무겁기 때문에 실행시 여러 애로사항을 동반했었습니다. 스프링은 무거운 문제를 해결해서 가벼운 프레임워크인 동시에 EJB의 몇가지 단점들을 개선했습니다.
IoC
는 Inversion of Control, 제어 반전
의 축약입니다. 기존에서는 객체의 생성 및 사용, 소멸에 대한 권한을 개발자가 가지고 제어했었는데요. 스프링에서는 개발자가 아닌 스프링 컨테이너가 객체의 생성, 사용, 소멸 등을 제어하고 관리합니다.
DI(Dependency Injection, 의존성 주입)
은 프로그램 구성 요소 사이의 의존 관계를 외부 설정 파일을 통해서 정의하는 방식을 의미합니다. DI
방식을 통해 모듈 간 결합도가 낮아서 재사용성이 높아지는 효과를 얻을 수 있습니다.
AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)
는 특정 로직을 기준으로 핵심 로직과 부가적 로직으로 나누어 보고 각각 모듈화해서 관리하는 것을 의미합니다.
보통 핵심 관심 사항과 공통 관심 사항으로 나누는데, 핵심 관심 사항은 애플리케이션의 핵심 기능과 관련있는 것을 의미하고 공통 관심 사항은 핵심 관심 사항에서 공통적으로 사용되는 관심 사항(보안, 트랜젝션, 로깅 등)을 의미합니다.
이 공통 관심 사항을 별도로 분리하고 분리한 객체의 메소드를 이용해서 공통 관심 사항 로직이 작동하도록 만드는 것을 AOP라고 할 수 있습니다.
POJO(Plain Old Java Object)
는 순수 Java로만 작성되고 생성된 객체를 의미합니다. 순수 Java라는 것은 외부 라이브러리/모듈 등을 이용하지 않고 기본 Java 스펙만 이용하는 것입니다. 이 방식을 지향하면 외부 라이브러리/모듈 변화에 유연하게 대처할 수 있는 등 다양한 장점이 있습니다.
말이 어렵긴한데요 단순하게 이야기하자면 필드, getter/setter만을 가진 객체가 가장 기본적인 형태의 POJO라고 할 수 있습니다.