waveofmymind
기록하는 습관
waveofmymind
전체 방문자
오늘
어제
  • 분류 전체보기 (124)
    • 📝 정리 (5)
    • 🌊TIL (9)
    • 💻CS (1)
      • 자료구조 (1)
    • 📙Language (9)
      • ☕Java (6)
      • 🤖Kotlin (3)
    • 🍃Spring (28)
    • 👨🏻‍💻알고리즘 (67)
      • 프로그래머스 (59)
      • 백준 (3)
    • 👷DevOps (4)
      • 🐳Docker (2)
      • 🤵Jenkins (1)

블로그 메뉴

  • 홈
  • Spring
  • Java
  • 알고리즘

공지사항

인기 글

태그

  • spring
  • 스프링
  • 코틀린
  • kotest
  • 챗GPT
  • SpringAOP
  • 스택
  • BFS
  • mybatis
  • 힙
  • JDBC
  • Spring Security
  • sql
  • 트랜잭션
  • 완전탐색
  • CORS
  • 스프링 부트
  • chat GPT
  • Open AI
  • AOP
  • 다이나믹 프로그래밍
  • 트랜잭션 전파
  • 스프링 시큐리티
  • LeetCode
  • Connection
  • kotlin
  • resultset
  • 통합테스트
  • til
  • spring boot

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
waveofmymind

기록하는 습관

[Spring] Spring이란?
🍃Spring

[Spring] Spring이란?

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

 

 

 

'🍃Spring' 카테고리의 다른 글

[Spring DB] MyBatis 사용하기  (0) 2023.01.29
[Spring DB] 테스트 - 트랜잭션  (0) 2023.01.29
[Spring DB] JDBC Template 사용하기  (0) 2023.01.29
[Spring] MapStruct  (0) 2023.01.23
[Spring] DTO를 사용하는 이유  (0) 2023.01.22
    '🍃Spring' 카테고리의 다른 글
    • [Spring DB] 테스트 - 트랜잭션
    • [Spring DB] JDBC Template 사용하기
    • [Spring] MapStruct
    • [Spring] DTO를 사용하는 이유
    waveofmymind
    waveofmymind

    티스토리툴바