스프링이 왜 만들어졌으며 스프링의 핵심은 무엇일까?
스프링이 만들어진 진짜이유는 자바의 객체 지향 프로그래밍(OOP)을
더 좋은 객체 지향 프로그래밍 으로 만들기위해서 스프링이 탄생한것이다.
웹 어플리케이션을 만들고 DB접근하는 편리한 기술 제공, 전자정부 프레임워크,
서버도 자동으로 띄어주고, 클라우드, 마이크로 서비스 등등 이런것은 스프링을 사용하며
따라오는 결과물인것이다.
객체지향 프로그래밍의 특징을 잘 살려내기위해 개발한 프레임워크가 스프링 프레임워크다.
객체 지향 프로그래밍(OOP)이 뭐길래?
객체 지향 프로그래밍의 대표적인 특징 4가지 추상화, 상속, 캡슐화,다형성이 매우 중요하다.
자바를 배운다면 꼭알아야할 특징이다.
객체지향 프로그래밍의 정의가 뭘까? .
위키피디아에서 가져온 정의를 보면,
객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
이 객체지향 프로그래밍을 통해서, 프로그램을 수정하기 쉽고, 기능을 추가하기 쉽게해주기 때문에 많이 사용한다.
이걸 '다형성' 이라고한다.
스프링은 이 '다형성'의 특징을 DI(의존 주입) 과 loc( 제어의 역전)로 잘 쓰이게끔 되어있다.
객체지향 프로그래밍의 5원칙 (SOLID)
SRP: 단일 책임 원칙 (Single Responsibility Principle)
OCP:개방 폐쇄 원칙 (Open Close Principle)
LSP : 리스코프 치환 원칙 (Liskov Substituion Principle)
ISP :인터페이스 분리 원칙 (Interface Segregation Principle)
DIP: 의존관계 역전 법칙 (Dependancy Inversion Principle)
SRP의 특징
한 클래스는 하나의 책임만 가져야한다.
이 책임에는 모호하기에, 중요한 기준은 변경이다. 변경의 파급력이 적을수록 SRP를 잘 지킨것이다.
이게 무슨말이냐, 코드를 수정해야대는데 변경해야하는 클래스가 적을수록 좋은것이다.
기능 하나 수정하는데 이것저것 다 바꿔야한다면 좋지않다.
OCP의 특징
기능을 확장할때는 열려있어야하고 변경할때는 닫혀야한다
LSP의 특징
프로그램 객체는 프로그램의 정확성을 깨트리지 않으면서 하위 타입의 인스턴스로 바꿀수 있어야한다.
쉽게말하자면, 정수기의 COLD 버튼을누르면 찬물이 나와야하는데, 뜨거운물이 나오면 LSP를 위반하는것이다.
인스턴스를 구현한 구현체를 믿고 사용하려면 이 원칙이 필요하다.
ISP의 특징
특정 클라이언트를 위한 여러개의 인터페이스가 범용적인 인터페이스 1개보다 낫다.
인터페이스가 더 명확해지고, 대체 가능성이 높아진다.
DIP의 특징
프로그래머는 추상화에 의존해야지, 구현체에 의존하면 안된다.
즉, 인터페이스를 물려받은 클래스를 의존하지말고, 상위 인터페이스를 의존해야한다.
하지만, 이 다형성만으로 OCP와 DIP를 지키지 못한다.
그 내용은 다음 포스팅에 게시하겠다.
'자바 > 스프링(Spring)' 카테고리의 다른 글
스프링(Spring) 빈 수동등록, 자동등록 하는법 (0) | 2021.10.04 |
---|---|
스프링(Spring): 싱글톤(Singleton) 패턴 (0) | 2021.10.01 |
자주쓰이는 스프링 테스트코드 정리글 (1) | 2021.09.06 |
스프링 컨테이너 (0) | 2021.09.04 |
스프링(Spring):관심사의 분리 (0) | 2021.08.25 |