[JAVA] 스프링 프레임워크(Spring Framework)

2020. 9. 26. 02:28Programming Language/JAVA

반응형

■ 스프링 프레임워크(Spring Framework)의 정의

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크


1. 애플리케이션 프레임워크

특정 계층이나, 기술, 업무 분야에 국한되지 않고 애츨리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말하며, 

애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크입니다.

2. 경량급

다른 프레임워크와 비교하였을때 만들어진 코드가 지원하는 기술수준은 비슷하더라도 그것을 훨씬 빠르고 간편하게 작성하게 해줌으로써 생산성과 품질 면에서 유리하다는 것이 바로 경량급이라는 말로 표현되는 스프링의 특징입니다. 

3. 오픈소스

소스가 모두에게 공개되고, 특별한 라이선스를 취득할 필요없이 얼마든지 가져다 자유롭게 이용해도 된다는 뜻입니다. 소스를 자유롭게 열람하고 자신의 목적에 맞게 사용할 수 있을 뿐만 아니라, 필요하면 맘대로 수정할 수 있고, 수정된 제품과 소스를 다시 공개적으로 배포하는 자유도 허용됩니다.

4. 자바 엔터프라이즈 개발을 편하게

엔터프라이즈 개발에서 필연적으로 요구되는 기술적인 요구를 충족하면서도 개발을 복잡하게 만들지 않는다는 점이

스프링의 뛰어난 면입니다.


■ 스프링 프레임워크(Spring Framework)의 7가지 특징

1. 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.


2. 스프링은 Plain Old Java Object 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.

 

3. 스프링은 제어의 역전(IoC : Inversion of Control)을 지원한다. 

스프링 컨테이너가 필요에 따라 개발자 대신 Bean 객체들을 관리(제어)해주는 행위를 함으로써,

객체에 대한 제어권이 컨테이너로 역전되었다고 한다.

 

4. 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 

어떤 객체에 스프링 컨터이너가 어너테이션을 통해 또 다른 객체와 의존성을 맺어주는 행위를 의미한다.

 

5. 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.

 

6. 스프링은 영속성과 관련된 다양한 서비스를 지원한다. iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.

 

7. 스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.


■ 스프링 프레임워크(Spring Framework)의 4가지 전략

1. Portable Service Abstraction (서비스 추상화)

트랜잭션 추상화, OXM추상화, 데이터 액세스의 Exception 변환 기능 등 기술적인 복잡함은 추상화를 통해 Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리한다.

2. 객체지향과 DI(Dependency Injection) 의존관계 주입

Spring은 객체지향에 충실한 설계가 가능하도록 단순한 객체 형태로 개발할 수 있고, DI는 유연하게 확장 가능한 객체를 만들어 두고 그 관계는 외부에서 다이내믹하게 설정해준다.

3. AOP(Aspect Oriented Programming)

AOP는 애플리케이션 로직을 담당하는 코드에 남아 있는 기술 관련 코드를 분리해서 별도의 모듈로 관리하게 해주는 기술

4. POJO(Plain Old Java Object)

POJO는 객체지향 원리에 충실하면서 , 특정 환경이나 규약에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 객체이다.


■ 스프링 프레임워크(Spring Framework)의 7가지 구성

1. Spring Core 

Spring Framework 의 기본기능을 제공한다.

이 모듈에 있는 BeanFactory는 Spring의 기본 컨테이너면서 스프링 DI의 기반이다.

2. Spring AOP

AOP 모듈을 통해 Asepect 지향 프로그래밍을 지원한다.

AOP 모듈은 스프링 애플리케이션에서 Asepect를 개발할 수 있는 기반을 지원한다.

3. Spring ORM

MyBatis,Hibernate,JPA 등 널리 사용되는 ORM 프레임워크와의 연결고리를 제공한다.

ORM 제품들을 Spring의 기능과 조합해서 사용할 수 있도록 해준다.

4. Spring DAO

JDBC에 대한 추상화 계층으로 JDBC코딩이나 예외처리 하는 부분을 간편화 시켰으며,AOP 모듈을 이용해 트랜잭션 관리 서비스 제공

5. Spring Web

일반적인 웹어플리케이션 개발에 필요한 기본기능을 제공한다.

Webwork나 Struts와 같은 다른 웹어플리케이션 프레임워크와의 통합을 지원한다.

6. Spring Context

Context 모듈은 BeanFactory의 개념을 확장한 것으로 국제화(I18N)메시지, 애플리케이션 생명주기 이벤트, 유효성 검증 등을 지원한다.

7. Spring Web MVC(Model,View,Controller)

사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 어플리케이션을 만드는 경우에 일반적으로 사용되는 패러다임이다.

반응형