본문 바로가기
Skill Stacks/Java_Spring

스프링

by JayAlex07 2023. 8. 14.

스프링

출처 : 제로베이스 백엔드 스쿨

 

 

스프링 프레임워크란?

스프링 프레임워크는 자바 기반 오픈소스 웹 프레임워크다

  • 엔터프라이즈급 어플리케이션, 즉 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로 부터 행해지는 큰 규모의 환경에 사용할 수 있는 프레임워크다

 

정해진 틀에 맞춰서, 개발을 하는 것이다 (틀에 내가 개발한 클래스를 넣기만 하면 된다)

  • 어느정도 맞춰진 틀이 있어서, 자유도는 떨어지지만, 개발하기 편하다
  • 스프링 Bean이라는 규격에 맞춰 만들면 서로가 서로를 가져다 쓰기가 좋다

 

OOP (객체지향 프로그래밍)

 

컴퓨터는 주로 순서대로 코드를 읽는다

  • 그 코드가 한 두줄이면 보기 편하지만, 만줄, 그 이상의 코드가 있으면 사람이 읽기 매우 불편하다

 

객체지향 프로그램을 통해서 분류 그리고 교체를 할 수 있다

  • 코드를 클래스로 묶어서, 특정 기능이 필요할 때는, 클래스를 통해 객체로 불러와서 속성 또는 메서드를 가지고 온다
  • 내가 필요한 행동/속성을 객체로 불러오는 것
    • 즉 같은 기능에 대한 같은 코드를, 필요할때마다 모든 코드를 사용하는 것보단, 클래스를 통한 객체로 짧게 불러올 수 있다
  • 특정 기능을 바꾸기 위해서는, 그냥 클래스를 들어가서, 코드를 바꾸면 된다

 

 

SOLID?

 

SRP : 단일 책임 원칙 (Single Responsibility Principle)

  • 한 클래스는 단일의 책임만 가진다
    • 예) 수저의 용도는 밥을 먹기 위함이다
  • 한 클래스를 사용하면서 여러 명이 작업을 할 때에, 클래스 내에 속성 또는 메서드를 여러 명이서 한꺼번에 만질 수 있어서 conflict가 발생할 수 있다
    • 그래서 기능별로 클래스를 따로 나누고, 각 나눈 클래스로 역할 배분을 할 수 있다 (각 클래스 마다 기능별로 하나의 '책임'을 가질 수 있다)

 

OCP : 개방 폐쇄 원칙 (Open Closed Principle)

  • 확장에는 열려있고, 변경에는 닫혀있다
    • 즉 클래스를 수정을 하는 것이 아닌, 신규 클래스를 추가하는 것
  • 하나의 클래스를 사용하고, 그 클래스를 계속 수정할 때에 문제가 발생할 수 있다
    • 타겟하는 사회, 사람, 그룹별로 클래스를 수정하다보면, 로직이 매우 복잡해질 수 있다 (또는, 특정 그룹을 빼먹을 수 있다)
    • 그래서 타겟하는 그룹별로 클래스를 만들어서, 각 그룹별로 필요한 로직을 짜면, 훨씬 더 편리할 수 있다

 

LSP : 리스코프 치환 법칙 (Liskov Substitution Principle)

  • 클래스를 상속 받은 하위 클래스의 인스턴스는 상위 클래스의 인스턴스 역할을 수행하는데 문제가 없어야 한다
    • 부모 타입을 인터페이스처럼 생각하기

 

ISP : 인터페이스 분리 원칙 (Interface Segregation Principle)

  • 인터페이스도 단일 책임을 갖도록 분리해야 한다
  • SRP와 비슷하지만 인터페이스를 사용한다
    • class 사람 implements 선수 에서 선수 박지성 = new 사람() 을 불러올 때, 선수 인터페이스의 메서드만 사용하도록 제한한다
  • 일반적으로 ISP보다 SRP를 이용한다

 

DIP : 의존성 역전 원칙 (Dependency Inversion Principle)

  • 사용하던 라이브러리를 다른 라이브러리로 교체할 때에 코드를 완전히 바꿔야 한다
    • 즉 너무 하나의 라이브러리에 직접적으로 의존하게 되면, 교체하기가 더 어려워진다
  • 그래서 의존성을 역전을 하면 된다 (하위 모듈이 상위 모듈에 의존하게 하기)

'Skill Stacks > Java_Spring' 카테고리의 다른 글

스프링 테스트 코드  (0) 2023.08.30
스프링 패키지 구조  (0) 2023.08.29
스프링 구동시키기  (0) 2023.08.28
스프링 Initializer  (0) 2023.08.24
스프링 MVC  (0) 2023.08.23