SPRING?

스프링이 뭔지 한 번 짚고 넘어가야할 것 같아 포스트를 작성하게 되었습니다.

스프링이란 크게는 스프링부트, 스프링프레임워크 등을 포함하는 스프링 생태계로 볼 수 있고 작게는 빈을 관리하는 스프링 컨테이너(DI or IOC 컨테이너) 기술이라고 볼 수 있습니다.

스프링의 핵심은 자바나 코트린 기반의 프레임 워크로 객체지향적 개발을 가능하게 도와주는 것입니다.

기존의 쿼리 기반의 개발은 테이블에 종속되기 때문에 객체지향과는 거리가 멀어져 버리고, 자연히 개발 속도가 저하되는 등의 단점이 있죠.

그런데 스프링을 사용하여 개발하면 이러한 단점들을 보완해줄 수 있는 것입니다.

이것만으로 포스팅을 마치기에는 설명이 적은 것 같아 객체지형적 개발에 대해서도 조금 서술해 보겠습니다.

객체지향의 특징은 추상화, 캡슐화, 상속, 다형성이 있는데 결국 재사용성을 위함이라고 생각합니다.

만들어놓은 컴포넌트를 비슷한 상황에서 재사용하고 또 확장하여 재사용하는 것이 목적이 되는 것이죠.

다형성도 여기에 포함되는데 역할과 구현을 인터페이스와 클래스(와 구현객쳬)로 분리해 놓는 것입니다.

설명하는 김에 좋은 객체 지향 설계의 5원칙인 SOLID에 대해서도 간략히 서술해 보며 이번 포스팅을 마치겠습니다.

S - SRP (Single Responsibility Principle) : 단일 책임 원칙으로  클래스는 하나의 책임(역할) 가져야
O - OCP (Open Closed Principle) : 기능 확장에는 열려 있으나   구현 등의 변경에는 닫혀 있어야
L - LSP (Liskov Substitution Principle) : 구현은 인터페이스를 따라야
I _ ISP (Interface Segregation Principle) : 인터페이스도 적당하게  쪼개져있어야
D - DIP (Dependency Inversion Principle) : 인터페이스에 의존해야