스프링
출처 : 제로베이스 백엔드 스쿨
스프링 프레임워크란?
스프링 프레임워크는 자바 기반 오픈소스 웹 프레임워크다
- 엔터프라이즈급 어플리케이션, 즉 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로 부터 행해지는 큰 규모의 환경에 사용할 수 있는 프레임워크다
정해진 틀에 맞춰서, 개발을 하는 것이다 (틀에 내가 개발한 클래스를 넣기만 하면 된다)
- 어느정도 맞춰진 틀이 있어서, 자유도는 떨어지지만, 개발하기 편하다
- 스프링 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 |