관리 메뉴

나만을 위한 블로그

[Spring] Spring(스프링)이란? 본문

개인 공부/Spring

[Spring] Spring(스프링)이란?

참깨빵위에참깨빵 2023. 7. 16. 21:57
728x90
반응형

아래는 내가 참고한 2023 자바 개발자 로드맵이다.

javarevisited.blogspot.com/2019/10/the-java-developer-roadmap.html

 

The 2021 Java Developer RoadMap [UPDATED]

A blog about Java, Programming, Algorithms, Data Structure, SQL, Linux, Database, Interview questions, and my personal experience.

javarevisited.blogspot.com

이 중에서 이번 포스팅의 주제인 스프링에 대해서 기록하고자 한다.

 

Spring은 '봄, 스프링'이란 사전적 의미를 가진 단어다. 왜 이 이름이 붙게 된 걸까?

 

https://stackoverflow.com/questions/5549854/spring-framework-name-background

 

Spring Framework name background

What does spring mean in reference to Spring Framework? I don't think that this just the favorite season of its author)

stackoverflow.com

Spring은 전통적인 J2EE의 겨울 이후 새 시작을 의미한다

 

J2EE에서 문제가 있었는지, 무엇이 있었는지 몰라도 겨울이라 할 정도로 안 좋았던 시기에 스프링이 나타나면서 봄이 찾아왔다고 표현하기 위해 Spring이란 이름을 사용한 것 같다.

이제 스프링이 뭔지 확인해 본다. 아래는 공식 홈페이지에서 스프링에 대한 설명이다.

 

https://spring.io/projects/spring-framework

 

Spring Framework

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key element of Spring is infrastructural support at the application level: Spring focuse

spring.io

스프링 프레임워크는 모든 종류의 배포 플랫폼에서 최신 자바 기반 엔터프라이즈 애플리케이션을 위한 포괄적인 프로그래밍 및 구성 모델을 제공한다. 스프링의 핵심 요소는 애플리케이션 수준의 인프라 지원이다. 스프링은 엔터프라이즈 애플리케이션의 '배관(plumbing)'에 중점을 둬서 팀이 특정 배포 환경에 불필요하게 연결하지 않고 애플리케이션 수준의 비즈니스 로직에 집중할 수 있게 한다

< 기능 >

- 핵심 기술 : 종속성 주입, 이벤트, 리소스, i18n, 유효성 검사(validation), 데이터 바인딩, 타입 변환, SpEL, AOP
- 테스팅 : mock 객체, TestContext 프레임워크, 스프링 MVC 테스트, WebTestClient
- 데이터 접근 : 트랜잭션, DAO 지원, JDBC, ORM, 마샬링 XML
- 스프링 MVC 및 스프링 WebFlux 웹 프레임워크
- 통합 : 원격, JMS, JCA, JMX, 이메일, 작업, 스케줄링, 캐시 및 관찰 가능성(observability)
- 언어 : 코틀린, Groovy, 동적 언어

 

보통 자바 스프링이라고 부르지만 코프링이라는 용어가 생겼듯 코틀린도 공식 지원하는 걸 볼 수 있다. 그 외에 여러 테스트 프레임워크와 다양한 것들을 지원하는 걸 볼 수 있다.

아래는 영문, 한글 위키백과에서의 설명이다.

en.wikipedia.org/wiki/Spring_Framework

 

Spring Framework - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Application framework for Java platform The Spring Framework is an application framework and inversion of control container for the Java platform. The framework's core features can be

en.wikipedia.org

스프링 프레임워크는 자바 플랫폼을 위한 애플리케이션 프레임워크 및 제어 컨테이너의 반전(inversion of control container)이다. 프레임워크의 핵심 기능은 모든 Java 애플리케이션에서 사용할 수 있지만 Java EE (Enterprise Edition) 플랫폼 위에 웹 애플리케이션을 구축하기위한 확장 기능이 있다. 프레임 워크가 특정 프로그래밍 모델을 부과하지는 않지만 EJB (Enterprise JavaBeans) 모델에 추가 된 것으로...(중략)...오픈소스다.

ko.wikipedia.org/wiki/%EC%8A%A4%ED%94%84%EB%A7%81_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC

 

스프링 프레임워크 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

스프링 프레임워크(영어: Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.

 

제어 컨테이너의 반전이란 말뜻을 모르겠다. 영문 위키백과에선 저 inversion of control 부분에 링크를 걸어 "제어 반전" 문서로 이동하게 했는데, 이곳에서 설명하는 내용은 아래와 같다.

SW 엔지니어링에서 IoC(Inversion of Control)은 프로그래밍 원리다. 기존 제어 흐름과 비교해 제어 흐름을 반전시킨다. IoC에서 컴퓨터 프로그램의 사용자 지정 작성 부분은 일반 프레임워크에서 제어 흐름을 받는다. 이 디자인을 쓰는 소프트웨어 아키텍처는 기존의 절차적 프로그래밍에 비해 제어를 반전한다. 기존 프로그래밍에서 프로그램의 목적을 표현하는 사용자 정의 코드는 일반 작업을 처리하기 위해 재사용 가능한 라이브러리를 호출하지만, 제어 반전을 사용하면 프레임워크다. 사용자 지정 또는 작업별 코드를 호출한다.
IoC는 프로그램의 모듈성을 높이고 확장 가능하게 만드는 데 사용되며 객체 지향 프로그래밍 및 기타 프로그래밍 패러다임에 적용된다.

이걸 계속 파고들면 스프링에서 너무 멀어질 것 같기 때문에 위키백과의 내용만 가져왔다. 이것에 대해선 나중에 포스팅한다.

 

 

본론으로 돌아와서, 스프링은 프레임워크다.

프레임워크가 무엇인지에 대해선 예전에 포스팅했으니 생략한다.

onlyfor-me-blog.tistory.com/260

 

프레임워크와 라이브러리의 차이점

먼저 프레임워크의 뜻부터 생각해보자. Frame과 Work라는 2개 단어가 합쳐진 것 같으니, 이 둘의 뜻을 따로 떼어내서 생각해보자. Frame : (나무, 금속등으로 된) 틀, 액자, 뼈대 Work : 일하다, 일, 직장,

onlyfor-me-blog.tistory.com

 

이제 인터넷을 돌아다니면서 스프링이 무엇인지 확인했다.

 

www.marcobehler.com/guides/spring-framework

 

What is Spring Framework? An Unorthodox Guide

You can use this guide to understand what Spring framework is and how its core features like dependency injection or aspected oriented programming work. Also, a comprehensive FAQ.

www.marcobehler.com

스프링 프레임워크는 몇 가지 편의 계층(DB 액세스, 프록시, 측면 지향 프로그래밍, RPC, 웹 MVC 프레임워크)이 추가된 종속성 주입 컨테이너다. 자바 애플리케이션을 더 빠르고 편하게 구축할 수 있다.

 

www.guru99.com/spring-tutorial.html

 

Spring Tutorial: What is Spring Framework & How to Install

What is Java? Java is a general-purpose, class-based, object-oriented programming language...

www.guru99.com

스프링 프레임워크는 자바를 써서 웹 애플리케이션을 빌드하기 위한 오픈소스 프레임워크다. 강력하고 가벼우면서도 사용하기 쉬우며 자바 애플리케이션 개발을 쉽게 지원한다. 스프링은 hibernate, struts, tapestry 및 JSF와 같은 다양한 프레임워크를 지원하기 때문에 프레임워크의 프레임워크로 생각할 수 있는 경량 프레임워크다.

 

stackoverflow.com/questions/1061717/what-exactly-is-spring-framework-for

 

What exactly is Spring Framework for?

I hear a lot about Spring, people are saying all over the web that Spring is a good framework for web development. What exactly is Spring Framework for?

stackoverflow.com

스프링은 분리된 시스템을 구축할 수 있는 패턴인 의존성 주입을 위한 프레임워크다...(중략)...스프링이 하는 일은 XML 파일 또는 어노테이션을 사용해 클래스를 연결하는 것이다. 이렇게 하면 모든 객체가 스프링에 의해 인스턴스화 및 초기화되고, 올바른 위치(서블릿, 웹 프레임워크, 비즈니스 클래스, DAO 등)에 삽입된다.

 

의존성(종속성) 주입이라면 안드로이드에서의 의존성 주입과 같은 것인가?

스프링에서의 의존성 주입까지 알아보는 건 이 포스팅의 범위를 넘기 때문에 다음에 한다.

결국 스프링 프레임워크란 데이터 처리, 트랜잭션이 엔터프라이즈급으로 이뤄지는 애플리케이션을 만들기 위해 사용할 수 있는 프레임워크다.

반응형
Comments