단의 개발 블로그
Spring 이란? 본문
스프링이란?
- Java의 웹 프레임워크
- 다양한 Application 제작에 사용되는 틀
Framework/Library
프레임워크는 어떠한 목적을 달성하기 위해 고안된 구조이며, 소프트웨어 개발에 있어서 뼈대의 역할을 한다. 라이브러리는 필요한 기능이 모여있는 코드의 묶음이며, 개발자가 소프트웨어 개발 중 필요한 기능이 있을 경우 누군가가 작성한 라이브러리를 가져다 사용하게 된다. 즉, 라이브러리는 필요한 기능이 묶여있는 코드이며, 프레임워크는 라이브러리 + 설계이다.
특징
- 경량 컨테이너로서 자바 객체를 직접 관리하며 객체의 생성, 소멸과 같은 생명주기 관리 및 스프링으로 부터 필요한 객체를 얻어와서 사용한다.
- Plain Old Java Object 방식을 지원하기 때문에 Spring 컨테이너에 저장되는 Java 객체는 특정 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 된다.
- 의존성 주입(DI : Dependency Injection)을 지원한다. 트랜잭션, 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
- 영속성과 관련된 다양한 서비스를 지원한다. MyBatis나 Hibernate 등과 같은 DB 처리 라이브러리와 쉽게 연결하여 사용할 수 있다.
- 스프링은 높은 확장성을 가진다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있다.
스프링 요소

- Core Container
- 스프링 프레임워크의 핵심은 Bean의 생명주기와 설정, 처리 방법을 관리
- 모든 스프링 모듈의 기반
- Beans
- 근간이 되는 IOC/DI 기능을 담당
- BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원
- DI 기능의 핵심인 Bean Factory와 DI기능을 제공하는 모듈이며 bean의 meta data, bean리더, beanFactory의 구현과 Propertie aditor가 포함되어 있다. - Core
- 스프링에서 사용하는 핵심 모듈이며, 어노테이션, 컨버터, 상수, 유틸리티 클래스 등을 제공한다. - Context
- Core and Beans를 견고하게 만든 모듈
- JNDI처럼, 프레임워크 방식이고 객체에 접근하기 위한 방법을 제공한다.
- Beans 모듈에 더하여 국제화, 이벤트 전판, 리소스 로딩, 투명한 Context 생성 등을 제공한다.
- 대부분의 기능을 담고 있는데 bean 스캐너 자바 코드 설정 기능, EJB 지원, 포매터, 로드 타임, 위빙, 표현식, JMX, 리모팅 등 - spEL
- JSP의 EL을 스프링에 맞게 확장시킨 모듈
- querying - 객체 탐색
- SpringEL/SpEL - 강력한 표현 언어 제공
- 객체 속성에 대한 읽기 및 설정, 메소드 호출, 배열에 접근, Collection and Indexrs, 논리 및 수리연산, named variables, Spring의 IOC container로 부터 이름에 의한 객체 검색 등 제공 - JSP EL이란
- JSP 스크립트의 표현식을 대신하여 속성 값을 쉽게 출력하도록 고안된 언어
- 출력, 반복처리 태그 기반으로 제공
- 기존 Expression Tag(<%= %>) 대체
- Beans
- AOP(Aspect Oriented Programming)
- 관점 지향 프로그래밍을 풍부하게 지원하고 객체 간의 결합력을 낮추게 도와준다.
- 트랜잭션이나 로깅, 보안 등 공통적으로 필요로 하는 모듈을 분리해서 적용가능하다. - Instrumentation
- JVM에 에이전트를 추가하는 기능을 제공 (= 톰캣용 위빙 에이전트, weaving agent를 제공)
- 톰캣은 클래스 로더 되는 클래스 파일을 변환 - Data Access / Integration
- JDBC, ORM, 트랜잭션 등 서비스 추상화를 이용해 쉽게 데이터에 접근
- JDBC(Java Database Connectivity ) : Java에서 DB 사용 시 추상화된 레이어를 제공
- ORM(Object Relation Mapping) : 프레임워크인 Hibernate, MyBatis, JDO, JPA와 통합 지원
- OXM(Object/XML, Mapping) : Object와 XML간의 변환을 위한 추상 계층 제공, JAXB, Castor, XMLBeans, JiBX, XStream
- JSM(Java Message Service) : 메시징 처리를 위한 모듈 제공
- Transaction : 스프링의 데이터에 직접적인 트랜잭션 관리, 선언적인 트랜잭션 관리에 있어 일관된 추상화를 제공하고, DataAccessException 예외 계층 구조와 트랜잭션 동기화 저장소 JCA기능을 제공하거나 포함 - Web
- 다양한 MVC 프레임워크와 같이 사용 가능하지만 자체적으로도 Spring 모듈이 만들어져 있고 HTTP 호출자나 REST API 모듈을 제공
- Web : 기본적인 웹 기반을 위한 공통적인 기능을 제공 및 정의한 모듈, Multipart Request 등의 다양한 기능을 지원한다. 다중 FileUpload처리, 리스너와 웹 기반으로 하는 Application Context를 위한 IOC 컨테이너의 초기화를 제공
- Servlet : 웹 애플리케이션 구현을 위한 Spring MVC를 제공한다. 전통적인 MVC와 @MVC 기능을 모두 포함하며, Structs, JSF, WebSocket과 같은 프레임워크의 통합을 지원한다.
- WebSocket : JSR-356 스펙에 따라 구현된 WebSocket 프로그래밍을 지원하는 모듈이다.
- Portlet : 포털 기반 MVC 구현을 위한 모듈을 제공한다.
출처
https://jerryjerryjerry.tistory.com/62
https://velog.io/@alghrksl/Spring-Spring-%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
https://docs.spring.io/spring-framework/docs/4.3.x/spring-framework-reference/html/overview.html
'Web > Spring' 카테고리의 다른 글
| 데이터 베이스 (0) | 2024.09.04 |
|---|---|
| 사용자 요청 처리하기 (0) | 2024.09.03 |
| 간단한 웹 요청 만들기 (0) | 2024.05.08 |
| 스프링 요청 및 라이브러리 살펴보기 (1) | 2024.05.02 |
| 프로젝트 생성 및 프로젝트 구조 (0) | 2024.05.02 |