- EJB를 주 프레임워크로 사용할 때 불편했던 점들(무거움, 따라야 할 스펙들이 복잡함)을 해소하기 위해 탄생함
- 2002년 로드존슨이 출판한 도서 Expert One-on-One J2EE Design and Development에 선보인 코드가 현재 Spring의 근간이 됨
- 이 도서를 읽은 개발자들이 '코드가 책으로만 존재하기에는 너무 아깝다'라며 로드 존슨의 허가를 받은 뒤 프레임워크로 발전시킴
- 2003년 6월 Apache 2.0 License로 공개됨
- 2004년에 1.0v이 배포됨
자바, 엔터프라이즈 개발, 오픈소스, light-weigth
"애플리케이션 프레임워크"다
특정 계층이나 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말함
굉장히 범용적이고 다양한 분야에서 활용하고 있습니다. 즉, 그만큼 양도 많겠죠? 하지만 다 알 필요는 없습니다.
Spring Framework를 잘 사용하기 위해 중요한 것은 우리가 필요한 것만 골라서 커스터마이징하고 테일러링하는 작업을 잘 하는 것이기 때문입니다.
단순한 웹 컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있음
EJB에 비해 경량급입니다. 또한 일반 자바 객체만을 사용하여 엔터프라이즈급의 고급 기술을 구현할 수 있습니다.
개발자가 복잡하고 실수하기 쉬운 Low Level에 많이 신경 쓰지 않으면서 Business Logic 개발에 전념할 수 있도록 해줌
단순한 시스템이 아닌
엔터프라이즈라는 용어가 계속해서 나오는데 이것은....
Spring은 OpenSource의 장점을 충분히 취하면서 동시에 OpenSource 제품의 단점과 한계를 잘 극복함
Spring 컨테이너는 Java 객체의 Life Cycle을 관리하며, Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.
자주 쓰이고 중요한 객체들을 개발자가 아닌 컨테이너가 다루도록 되어있습니다.
Spring은 설정 파일이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있도록 하고 있다.
컨테이너가 다루는 객체들의 의존성 관계도 자동으로 설정해주는 기능을 지원합니다.
Spring은 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈들을 실제 핵심 모듈에서 분리해서 적용할 수 있다.
핵심 코어 기술과 주변 기술을 분리해서 각각 따로 개발해서 런타임 시에 결합시켜주는 기능으로, 애플리케이션을 단순하게 만들어주고 생산성과 품질을 높여주는 고급 기술을 지원합니다.
Sring 컨테이너에 저장되는 Java객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 된다.
JDBC, JTA 등 어떤 트랜잭션을 사용하던지간에, 설정을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용 가능
Spring은 Mybatis, Hibernate 등 데이터베이스 처리를 위한 ORM(Object Relational Mapping) 프레임워크들과의 연동 지원
특징 5, 6번을 서비스 추상화라고 합니다.
6가지 특징을 3가지로 줄여서 구분하자면,
(1)컨테이너 제공, (2)AOP 지원, (3)서비스 추상화로 말할 수 있습니다.
트랜잭션 기반임.
그림에서 하나 더 추가하자면 NoSQL DB 연동 모듈도 있음
많이 추상화 되어 있어서 개발하기 편리하다
주요한 객체들(Bean)을 관리해주는 아주 중요한 모듈
이클립스 기반의 스프링 툴.
최근에 주목받고 있는 Spring 툴.
https://www.oracle.com/java/technologies/downloads/#jdk18-windows
위 사이트 들어가서 설치합니다.
저는 x64 Installer 설치했습니다.
위 사이트 들어가서 설치합니다.
https://tomcat.apache.org/download-10.cgi
저는 가장 최신(10) 버전을 설치했습니다.
Window -> Preferences 클릭
검색창에 'server' 검색 -> Runtime Environments -> Add 클릭
Apache Tomcat v10.0 선택 -> Next 클릭
1강은 역사, 특징 등 이론적인 부분을 학습했습니다. 강의 촬영 시기와 현재 시간 차이가 몇 년 나더라구요;; 그래서 그런가 STS에서 기본적으로 제공한다는 pivotal tc server를 몇 십번ㅡㅡ 시도했는데도 STS 서버 선택할 때 죽어도 안나와요.. 그래서 포기하고 톰캣으로 설치했습니다. 강의에서는 tc server를 사용하겠다고 하지만.. 서버 강의도 아니고 Spring 강읜데 뭐 큰일이야 있겠어요 하하
비몽사몽한 예정으로 STS에 톰캣 서버 설정하는 부분은 따로 재업로드할 예정입니다. 캡쳐 따고 편집하는 과정이 힘겨와요...