[Spring] Spring 이란?

JoJo·2023년 8월 14일
0

💡 Spring 이란?


스프링(Spring)은 JAVA 언어를 기반으로 사용하며, JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크(Framework) 입니다.

대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 정자정부 표준 프레임 워크 반 기술로서 쓰이고 있습니다.


- 공식 사이트 : https://spring.io/


✔️ Spring의 특징


1. 컨테이너 역할

각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있습니다.

2. 제어 역행(IOC : Inversion of Control)

프로그램을 구동하는데 필요한 객체에 대한 생성, 변경 등의 관리를 프로그램을 개발하는 사람이 아닌 프로그램을 구동하는 컨테이너에서 직접 관리하는 것을 말합니다.

3. 의존성 주입(DI : Dependency Injection)

IoC 구현의 핵심 기술로, 사용하는 객체를 직접 생성하여 만드는 것이 아니라 컨테이너가 빈의 설정 정보를 읽어와 자동으로 해당 객체에 연결하는 것을 말합니다.

이렇게 의존성을 주입 받게 되면 이후 해당 객체를 수정해야 할 상황이 발생했을 때 소스 코드의 수정을 최소화 할 수 있습니다.

4. 관점지향 프로그래밍(AOP : Aspect-Oriented Programming)

트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있습니다.

5. MVC 패턴

웹 프로그래밍 개발 시 거의 표준적인 방식인 "Spring MVC"라 불리는 모델-뷰-컨트롤러 패턴을 이용한다.

6. POJO 방식의 프레임워크

Plain Old Java Object 방식의 프레임워크로, 단순히 평범한 자바 빈즈(Javabeans) 객체를 의미합니다.

7. 높은 확장성

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



✔️ 스프링 모듈


1. Spring Core

  • Spring 프레임워크의 근간이 되는요소. IoC(또는 DI) 기능을 지원하는 영역을 담당합니다.
  • BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원합니다.

2. Spring Context

  • Spring Core 바로 위에 있으면서 Spring Core에서 지원하는 기능외에 추가적인 기능들과 좀 더 쉬운 개발이 가능하도록 지원합니다.
  • 또한 JNDI, EJB등을 위한 Adaptor들을 포함합니다.

3. Spring DAO

  • 지금까지 우리들이 일반적으로 많이 사용해왔던 JDBC 기반하의 DAO개발을 좀 더 쉽고, 일관된 방법으로 개발하는 것이 가능하도록 지원합니다.
  • Spring DAO를 이용할 경우 지금까지 개발하던 DAO보다 적은 코드와 쉬운 방법으로 DAO를 개발하는 것이 가능합니다.

4. Spring ORM

  • Object Relation Mapping 프레임워크인 Hibernate, IBatis, JDO와의 결합을 지원하기 위한 기능합니다.
  • Spring ORM을 이용할 경우 Hibernate, IBatis, JDO 프레임워크와 쉽게 통합하는 것이 가능합니다.

5. Spring AOP

  • Spring 프레임워크에 Aspect Oriented Programming을 지원하는 기능이다. 이 기능은 AOP Alliance 기반하에서 개발합니다.

6. Spring Web

  • Web Application 개발에 필요한 Web Application Context와 Multipart Request등의 기능을 지원합니다.
  • BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원

7. Spring Web MVC

  • Spring 프레임워크에서 독립적으로 Web UI Layer에 Model-View-Controller를 지원하기 위한 기능합니다.
  • 지금까지 Struts, Webwork가 담당했던 기능들을 Spring Web MVC를 이용하여 대체하는 것이 가능하며, 또한 Velocity, Excel, PDF와 같은 다양한 UI 기술들을 사용하기 위한 API를 제공합니다.




[출처]
https://goddaehee.tistory.com/156

profile
꾸준히

1개의 댓글

comment-user-thumbnail
2023년 8월 14일

이런 유용한 정보를 나눠주셔서 감사합니다.

답글 달기