일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CRUD
- 재귀적
- 싱글톤빈
- Java
- Spring
- 프로토타입빈
- JS Basic
- 컴포넌트 스캔
- DI
- 빌드관리
- 웹 스코프
- 스프링
- 스프링 컨테이너
- React Springboot
- javasciprt
- Gardle
- 빌드관리도구
- AnnotationConfigApplicationContext
- 스프링부트
- springboot
- react
- maven gradle
- gradle maven
- 스코프 빈
- 스프링 CRUD
- 스프링 빈
- Scpoe bean
- 리액트 스프링부트
- 빈 스코프
- 빌드 관리 도구 Maven 과 Gradle 비교
- Today
- Total
기술블로그
[Spring] 스프링 프레임워크(Spring Framework)란? 본문
스프링 프레임워크(Spring Framework)란?
스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다.
대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.
프레임워크(Framework)
프레임워크는 사전적으로 '뼈대', '골조'를 의미하는데, 소프트웨어에서는 특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체를 말한다.
스프링에서 말하는 프레임워크는 서버 개발 프레임워크로 웹 프레임워크로도 불린다. 이러한 프레임워크는 기능 구현을 위한 기본적인 형태를 지원할 뿐이고 필수적인 사항은 아니다. 하지만 사용여부에 따라 생산하는 코드 품질 및 개발 속도를 높일 수 있다.
특징
- POJO(Plain Old Java Object) 방식
POJO는 Java EE의 EJB(Enterprise JavaBeans) 를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하며 나타난 용어다. 스프링 컨테이너에 저장되는 자바 객체는 특정한 인터페이스를 직접 구현하거나 상속받을 필요가 없어서 기존 라이브러리를 지원하기가 용이하고, 객체가 가볍다.
- 관점 지향 프로그래밍(Aspect Oriented Programming, AOP)
로깅, 트랜잭션, 보안 등 여러 모듈에서 공통 관심 사항(cross-cutting concern) 과 핵심 관심 사항(core concern) 분리하여 관리할 수 있다.
- 의존성 주입(Dependency Injection, DI)
구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부에서 설정을 통해 정의되는 방식이다. 코드 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈간의 결합도도 낮출 수 있다. 계층, 서비스 간에 의존성이 존재하는 경우 스프링 프레임워크가 서로 연결시켜준다.
- 제어 역전(Inversion of Control, IoC)
컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
- 생명주기 관리
스프링 프레임워크는 Java 객체의 생성, 소멸을 직접 관리하며 필요한 객체만 사용할 수 있다.
- 모델-뷰-컨트롤러(MVC) 패턴
스프링은 웹 프로그램밍 개발 시 거의 표준적인 방식인 Spring MVC라 불리는 모델-뷰-컨트롤러(MVC) 패턴을 사용한다. DispatcherServlet이 Controller 역할을 담당하여 각종 요청을 적절한 서비스에 분산시켜주며 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있다.
'Spring > Spring 개념 및 핵심' 카테고리의 다른 글
스프링 빈(Bean)과 컴포넌트 스캔 (0) | 2021.09.09 |
---|---|
스프링 컨테이너란? (0) | 2021.09.09 |
Spring 의 다양한 의존성 주입(Dependency Injection) 방법 (0) | 2021.09.06 |
빌드 관리 도구 Maven 과 Gradle 비교 (0) | 2021.09.02 |