Web

Spring 개요

superbono 2021. 4. 29. 00:17

* Spring Framework?

 - 모든 기능을 종합적으로 제공하는 경량화된 솔루션이다.

 - JEE(Java Enterprise Edition)가 제공하는 다수의 기능을 지원하고 있기 때문에, JEE를 대체하는 Framework로 자리잡고 있다. 

- Spring은 JEE가 제공하는 다양한 기능을 제공하는 것 뿐만 아니라 DI(Dependency Injection)나 AOP(Aspect Oriented Programming)와 같은 기능도 지원한다.

- 개발자가 복잡하고 실수하기 쉬운 low level에 신경 쓰지 않고 business logic 개발에 전념할 수 있도록 해준다.

 

* Spring Framework의 구조

Enterprise 개발 시 복잡함을 해결하는 spring의 핵심

 

1. POJO(Plain Old Java Object)

 - 특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바객체

 - 테스트하기 용이하며, 객체지향 설계를 자유롭게 적용할 수 있다는 장점이 있음.

 

2. PSA(Portable Service Abstractions)

 - 환경과 세부기술의 변경과 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 설계 원칙

 

3. DI(Dependency Injection)

 - 외부에서 객체를 만들고 필요할 때마다 그 객체를 주입해놓으면 그 필요한 클래스는 아무것도 안하고 실행만 해도 된다. 

 - DI는 유연하게 확장 가능한 객체를 만들어 두고 객체 간의 의존 관계는 외부에서 다이나믹하게 설정할 수 있다.  

 

4. AOP(Aspect Oriented Programming)

 - 관심사의 분리를 통해서 소프트웨어의 모듈성을 향상시킨다.

 - 공통 모듈을 여러 코드에 쉽게 적용할 수 있다.

 

* Spring Framework의 특징

 1. 경량 컨테이너

  - 스프링은 자바 객체를 담고 있는 컨테이너이다. (IoC 컨테이너)

  - 스프링 컨테이너는 이들 자바 객체의 생성과 소멸 같은 라이프 사이클을 관리한다. 

  - 미리 주입을 해놓았기 때문에  언제든지 스프링 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.

 

 2. DI(Dependency Injection - 의존성 지원 ) 패턴 지원

  - 스프링은 설정 파일(xml)이나 어노테이션을 통해서 객체 간의 의존 관계를 설정할 수 있다. 

  - 따라서 객체는 의존하고 있는 객체를 직접 생성하거나 검색(DL: Dependency Lookup)할 필요가 없다. 

 

 3. IoC(Inversion of Control) - 제어의 반전

  - 스프링에서 객체에 대한 생성과 생명 주기를 관리할 수 있는 기능을 제공하여 spring container, IoC container라고 부르기도 한다.

  - 자바의 객체 생성 및 의존 관계에 있어 제어권은 원래 개발자에게 있었다.

  - servlet과 EJB가 나타나면서 제어권이 servlet container과 EJB container로 넘어가게 되었으나 모든 객체에 대한 제어권이 넘어간 것은 아니며 sevlet과 EJB를 제외한 나머지 객체 제어권은 개발자들에게 있다.

 

 4. 스프링은 트랜잭션 처리를 위한 일관된 방법을 제공한다. 

  - 설정 파일을 통해 트랜잭션 관련 정보를 입력하기 때문에 트랜잭션 구현에 상관 없이 동일한 코드를 여러 환경에서 사용할 수 있다. 

'Web' 카테고리의 다른 글

REST(Representatilnal State Transfer) API  (0) 2021.05.04
메이븐(Maven) 이란?  (0) 2021.04.29
IoC(Inversion of Control)/DI  (0) 2021.04.29
sendRedirect vs forward  (0) 2021.03.31
Web Architecture / Servlet / JSP  (0) 2021.03.31