'코드로 배우는 스프링 웹 프로젝트' 도서에 기반하여 정리한 내용
말 그대로 뼈대나 근간을 이루는 코드들의 묶음을 정의
프레임워크의 최대 장점은 개발에 필요한 구조를 이미 코드로 만들어 놓았기 때문에 실력이 부족한 개발자들도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하며, 개발 시간도 단축되는 장점이 있다.
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크이며 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공한다.
경량(Light Weight) 프레임워크
복잡함에 반기를 들어 만들어진 프레임워크
프로젝트의 전체 구조를 설계할 때 유용한 프레임워크
다른 프레임워크들의 포용
개발 생산성과 개발 도구의 지원
스프링 버전에 따른 변화
POJO(Plain Old Java Object) 기반의 구성
특정한 인터페이스를 구현하거나 상속받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 제어가 가벼움
스프링은 다른 프레임워크들과 달리 이 관계를 구성할 때 별도의 API 등을 사용하지 않는 POJO의 구성만으로 가능하도록 제작되어 있음
쉽게 말해 일반적인 Java 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용 가능하다는 뜻
이 내용이 중요한 이유는 코드를 개발할 때 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다는 것을 의미하기 때문이고 개발자는 가장 일반적인 형태로 코드를 작성하고 실행할 수 있기 때문에 생산성에서도 유리하고 코드에 대한 테스트 작업 역시 좀 더 유연하게 할 수 있다는 것이 장점
의존성 주입(DI)을 통한 객체 간 관계 구성
각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결하는 것을 의미
의존성(Dependency)이란?
주입(Injection)이란?
스프링에서는 'ApplicationContext'라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해 주는 구조
따라서 스프링을 이용하면 기존 프로그래밍과 달리 객체와 객체를 분리해서 생성하고 이러한 객체들을 엮는(wiring) 작업을 하는 형태의 개발을 하게 됨.
스프링에서는 ApplicationContext가 관리하는 객체들을 '빈(Bean)'이라는 용어로 부르며 빈과 빈 사이의 의존 관계를 처리하는 방식으로 XML 설정, 어노테이션 설정, Java 설정 방식을 이용 가능
AOP(Aspect-Oriented-Programming) 지원
트랜잭션의 지원
편리한 MVC 구조
WAS의 종속적이지 않은 개발 환경