Spring[1] - Spring 프레임워크 개요
<<<<<< 1. Spring 프레임워크 개요 >>>>>>
목차 : 1. 스프링 프레임워크 개요, 2. 스프링의 역사와 설치
1. 스프링 프레임워크
Spring 역사
Spring
- 자바의 사실상 표준 프레임워크
- 2002년 로드존슨이 출판한 도서 Expert One-on-One J2EE Design and Development에 선보인 코드가 Spring의 근간이 됨
- 2003년 6월 Apache 2.0 License로 공개
버전 약력
1.0 (2004년 3월) ~ 4.3 (2016년 6월)
—> 오랜시간 업그레이드되며, 인기를 끌고 있다. 역사 만큼 강력한 기능과 안정적이며, 많은 레퍼런스를 보유하고 있다.
Spring Framework 개요
스프링 프레임워크란?
- Java 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
애플리케이션 프레임워크 | 경량급 프레임워크 |
특정 계층이나 기술, 업무 분야에 국한되지 않고 범용적인 프레임워크를 말함 ~> 필요한 내용만을 잘 골라서 커스텀마이징과 테일러링을 하는 작업이 중요 | 단순한 웹 컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있음 ~> 스펙을 이용하지 않고, 일반 포조로 개발할 수 있다. 단순한 웹 컨테이너에서도 엔터프라이즈급의 고급 기술을 개발할 수 있다. |
개발자가 복잡하고 실수하기 쉬운 Low Level에 많이 신경쓰지 않으면서 Business Logic 개발에 전념할 수 있도록 해줌 ~> Spring은 엔터프라이즈를 타겟으로 하고 있다. production에 적합한 어플리케이션을 개발하기에 적합한다. | Spring은 OpenSource의 장점을 충분히 취하면서 동시에 OpenSource 제품의 단점과 한계를 잘 극복함 |
Spring Framework 특징
- 컨테이너 역할
Spring 컨테이너는 Java 객체의 Life Cycle을 관리하며, Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.
—> 컨테이너는 dependency Injection을 제공한다.
—> 가장 중요한 객체는 개발자가 직접 개발하는 것이 아닌 컨테이너에 의해서 다루어 지도록 되어있다.
- DI(Dependency Injection) 지원
Spring은 설정 파일이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있도록 하고 있다.
- AOP(Aspect Oriented Programming) 지원
Spring은 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈들을 실제 핵심 모듈에서 분리해서 적용할 수 있다.
—> 핵심 core 기술과 주변 기술들을 분리해서, 따로 개발한다음 런타임시 결합시켜주는 기능
—> 어플리케이션을 단순하게 만들며, 생산성, 품질을 향상시킬 수 있는 기술
- POJO(Plain Old Java Object) 지원
Spring 컨테이너에 저장되는 Java객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 된다.
- 트랜잭션 처리를 위한 일관된 방법을 지원
JDBC, JTA 등 어떤 트랜잭션을 사용하던 설정을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용 가능
- 영속성(Persistence)과 관련된 다양한 API 지원
Spring은 MyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM(Object Relational Mapping) 프레임워크들과 연동 지원
—> 영속성이나 트랜잭션을 지원하는 것을 시스템 서비스라고 한다.
—> 이런 시스템 서비스를 쉽게 추상화시켜놓음 > 서비스 추상화
—> Spring의 3대 특징 (컨테이너, AOP, 서비스 추상화)
Spring Framework 기능요소
스프링의 주요 모듈 목록
Spring Framework Runtime
- Data Access/Integration —> 데이터 연동하는 모듈
—> DataSource 기능도 같이 제공함
—> noSQL (ex. mongoDB, redis) 를 다룬다.
- Web —> 가장 중요! 복잡한 웹 개발을 추상화 시켜놓음
—> J2EE 스펙과 POJO를 지향하기에 기존 기술들을 추상화시켜 놓았다.
- AOP
- Aspects
- Instrumentation
- Messaging
- Core Container —> Spring Container : Bean을 관리해줌
- Test
스프링 지원 IDE
- STS(Spring Tool Suite) —> Spring을 위한 Eclipse를 기반으로 한 스프링 툴
- IntelliJ IDEA