🍃Spring

[Spring] Spring이란?

waveofmymind 2023. 1. 28. 20:14

Spring이란?

스프링이라고 하는 것은 프레임워크 하나를 지칭하는 것일 수도 있지만, 스프링 하위 프레임워크를 포함한 집합체를 의미하기도 한다.

대표적으로,

  • 스프링 프레임워크
  • 스프링 부트(스프링 프레임워크의 모든 기술들을 편리하게 사용할 수 있도록 도와준다.)
  • 스프링 데이터 (CRUD를 편리하게 사용할 수 있도록 도와준다.)
  • 스프링 시큐리티 (보안 관련 기능을 편리하게 사용할 수 있도록 도와준다.)
  • 스프링 세션(세션 기능을 편리하게 사용할 수 있도록 도와준다.)
  • 스프링 Rest Docs (API 문서를 편리하게 사용할 수 있도록 도와준다.)
  • 스프링 배치 (배치 처리에 특화되어 있다.)

그중 핵심은 스프링 프레임 워크이며, 그 외의 기술들은 스프링 프레임워크를 편리하게 사용하도록 도와주는 기술들이라고 할 수 있다.

 

Spring Boot

스프링 프레임워크 기반 프로젝트를 복잡한 설정 없이 쉽고 빠르게 만들어주는 프레임워크

  • Spring Iniitializr와 같은 툴로 스프링 애플리케이션을 손쉽게 생성할 수 있다.
  • WAS를 내장하고 있어 별도의 웹 서버를 설치하지 않아도 된다.
  • 스프링과 써드파티 라이브러리를 자동으로 구성해준다.

Spring의 핵심 개념

스프링은 자바 언어 기반의 프레임워크이며,

자바는 객체 지향 언어로써, 스프링은 객체 지향 언어가 가진 특징을 살려내는데 효과적인 프레임워크이다.

-> 즉 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크라고 할 수 있다.

 

SOLID - 좋은 객체 지향 설계의 5원칙

  • Single Responsibility Principle, 단일 책임 원칙 - 한 클래스는 하나의 책임만을 가져야 한다.
    • 하나의 책임의 기준은 변경이다.
    • 변경의 파급 효과가 적으면 적을수록 단일 책임 원칙을 잘 지킨 것.
  • Open/Closed Principle, 개방 폐쇄 원칙 - 기존의 코드를 변경시키지 않고(Closed) 확장시킬 수 있다.
    • 인터페이스를 생성하고, 이에 대한 구현 클래스로 코드를 확장시킬 수 있다.
    • 그러나 이럼에도 코드의 변경이 불가피하기 때문에, 스프링 컨테이너에서 객체의 생성 및 연관관계를 주입해 주는 설정자의 역할을 한다.
  • Liskov substitution principle, 리스코프 치환 원칙 - 클래스를 상속하는 자식 클래스들은 부모 클래스의 규약을 지켜야 한다. 
    • 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야한다.
    • 규약이 지켜져야, 인터페이스의 구현체를 믿고 사용할 수 있다.
  • Interface Segregation Principle, 인터페이스 분리 원칙 - 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
    • 사람이라는 인터페이스 하나에 모든 메서드를 생성하는 것보다, 개발자, 농부 등과 같이 인터페이스를 명확하게 만드는 것이 대체 가능성을 높인다.
  • Dependency Inversion Principle, 의존 관계 역전 원칙 - 구체화가 아닌 추상화의 의존해야 한다.
    • 구현 클래스는 인터페이스에 의존해야 하며, 다른 구현 클래스에 의존해서는 안된다.

위 5가지 원칙에서 가장 중요한 특징은 다형성이다.

다형성이 지켜져야 좋은 객체 지향 설계를 할 수 있지만, 다형성만으로는 위 원칙을 지킬 수 없다.

 

이를 해결하기 위해 스프링에서는 다형성과, OCP, DIP를 지킬 수 있도록 지원해 준다.

  • 의존성 주입
  • DI 컨테이너

출처

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

https://ttl-blog.tistory.com/86

 

[Spring] 스프링이란?

우선 스프링의 탄생 배경을 알아보겠습니다. EJB(Enterprise Java Bean) EJB를 검색해보면 다음과 같이 설명합니다. 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한

ttl-blog.tistory.com