본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


SPRING FRAMEWORK

Spring core 스터디 1 - spring framework이란?

반응형

spring framework의 장점

 

1.스프링을 사용하면 java 엔터프라이즈 애플리케이션을 쉽게 만들 수 있다 .

JVM에서 대체 언어로 Groovy 및 Kotlin을 지원하여 엔터프라이즈 환경에서 Java 언어를 수용하는데 필요한 모든것을 제공하며 , 애플리케이션의 필요에 따라 다양한 종류의 아키텍처를 생성할 수 있다 .  

 스프링 5.1 버전부터 JDK 8이상 버전이 필요하며 JDK 11LTS 에 대한 기본 지원을 제공한다 . JavaSE 8 update 60 은 최소 패치 릴리즈로 java8을 제안하지만, 일반적으로 최신 패치 릴리즈의 사용을 추천한다 .

 

2.스프링은 광범위한 애플리케이션 적용 시나리오를 지원한다 .

 큰 규모의 기업에서 , 애플리케이션은 오랫동안 존재하며 업그레이드 주기가 개발자가 제어할 수 없는 JDK 및 애플리케이션 서버에서 실행되는 경우가 많다.  스프링에서는 클라우드 환경에서 서버가 내장 된 단일 jar로 실행 될 수도 있고, 

서버가 필요하지 않은 standalone application(batch , integration workloads 같은)도 구현이 가능하다.

 

3.스프링은 오픈 소스다.

 다양한 실제 사용 사례를 기반으로한 지속적인 피드백을 제공하는 크고 활동적인 커뮤니티가 있으며 이는 오랫동안 스프링이 성공적으로 발전할 수 있는 기반이 되었다 . 

 

spring framework의 의미

스프링이라는 단어는 다른 맥락에서 여러가지로 다른 것을  의미한다  . 모든 것이 시작되는 스프링프레임워크 프로젝트 자체의 참조로서 사용될수 있으며 시간이 지남에 따라 여러가지 것들이 추가되었다. 대부분의 경우 스프링이라하면 스프링이 가지고 있는 여러가지 프로젝트(Spring MVC, Spring Cloud , Spring Batch 등등 ....)들을  포함하는 것을 의미하며 , 이 문서에서는 Spring framwork 자체에 초점을 맞추고 있다.

 

 스프링은 모듈로 나눠져 있으며 애플리케이션은 필요한 모듈을 선택할 수 있다. 그 중 스프링 코어는 configuration model 과 dependency injection(DI)를 메커니즘을 포함하는 핵심 컨테이너 모듈이다. 그 외에도 스프링은 messaging, transactional data and persistence, web을 포함한 다양한 애플리케이션 아키텍처에 대한 지원을 제공한다. 또한 서블릿 기반 스프링MVC와  ,WebFlux을 포함한다.

 

*모듈에 대한 참고사항-JDK 9 "Jigsaw"경로를 통한 배포 (JDK 9 "Jigsaw" 조사 후 번역 )

  

spring framework의 역사

 스피링은 초기 J2EE의 복잡성에 대한 대응으로 2003년에 시작되었다. 일부에선 Java EE와 스프링이 경쟁에 있다고 말하지만  스프링은 JavaEE를 보완하는 프레임워크다. 실제로스프링 프로그래밍 모델은 J2EE 플랫폼의 모델을 수용하지 않고 그 중에 아래와 같은 엄선된 개별 사양을 통합하였다. 

 

-Servlet API

-WebSocketAPI

-Concurrency Utilities

-JSON Binding API

-Bean Validation

-JPA

-JMS

-트랜젝션 조정을 위한 JTA/JCA 설정.

 

스프링 프레임워크는 또한 의존성 주입과  Common Annotations를 사양을 지원하는데 이를 통해 애플리 케이션 개발자는 스프링 프레임 워크에서 제공하는 스프링 특정 메커니즘을 사용할 수 있다.

  스프링 5.0부터 , 최소레벨로  Java EE 7 레벨(Servlet 3.1이상, JPA2.1이상)이 필요로하며 동시에 Java EE 8 레벨에서 최신 API와의 런타임시의 즉각적인 통합을 제공하며(Servlet 4.0,JSON Binding API) . Tomcat8 및 9 , WebSphere9 및 JBoss EAP7과 호환된다. 

 

 시간이 지남에 따라 애플리케이션 개발에서 Java EE의 역할은 발전한다.  Java EE 및 스프링 초기에는 응용 프로그램서버에 배포되기 위해 만들어졌다 . 최근엔 스프링 부트의 도움으로 애플리케이션은 DevOps 및 클라우드 친화적인 방식으로 생성되며 서블릿 컨테이너가 내장되고 변경이 간단해졌다. 스피링 5부터는 , WebFlux 애플리케이션은 더이상 Servlet API를 직접적으로 사용하지 않는다 . 또한 서블릿 컨테이너가 아닌 Netty같은 서버에서서 실행이 가능하다.

 

스프링프레임워크를 넘어 스프링부트 , 스프링시큐리티, 스프링 데이타 , 스프링 클라우드 , 스프링 배치 등등  같은 프로젝트들이 계속해서 생겨나가고 있으며 진화하고 있다 .

 

spring framework 설계 철학

우리가 프레임워크에 대해 배울때 , 어떤 기능을 하는지 뿐만아니라 어떤 원칙을 따르는지 아는 것이 중요하다 .

다음은 스프링 프레임워크의 기본적인 원칙들이다 .

 

1.모든 레벨에서 선택권을 제공한다.

 

스프링을 사용하면 설계 결정을 최대한 늦출 수 있다. 예를 들어 ,  코드를 변경하지 않고 구성을 통해 지속성 공급자(Dependency provider)를 전환 할 수 있다. 다른 인프라 문제와 타사 API와의 통합도 이에 포함 된다. 

 

2.다양한 관점을 수용한다.

 

스프링은 flexibilty를 포용한다 . 일을 수행하는 다양한 방식,다양한 관점으로 애플리케이션 요구 사항을 지원한다.

 

3.강력한 이전 버전과의 호환성 유지

 

스프링의 진화는 버전간의 몇가지 주요 변경 사항들을 적용하도록 신중하게 관리되어 왔으며 , 스프링에 의존하는 애플리케이션 및 Third-party libraries의 유지 보수를 용이하게 하기 위해 신중하게 선택된 범위의 JDK버전 및 타사 라이브러리를 지원한다. 

 

4. 코드 품질을 위한  high stadards를  제공한다 .

 

스프링 프레임워크는 최신이며 정확하고  javadoc을 기반으로 하며 패키지간에 순환 종속성이 없는 깨끗한 코드 구조를 보장한다. 

 

  

반응형