BackEnd 학습/Spring Framework

Spring(스프링)을 위한 사전 지식

잉아당 2022. 9. 24. 16:55
728x90

- 스프링의 핵심

스프링은 자바 언어 기반의 프레임워크

객체 지향의 특징을 살린 프레임워크

객체지향은 메시지를 주고 받고 데이터를 처리할 수 있는 객체들의 모임으로 구성하는 것

객체지향 프로그래밍은 유연하고 변경이 용이

 

- 객체지향 특징

#추상화

공통적으로 가진 속성이나 기능을 추출하여 표현 한 것

 

#캡슐화

직접적으로 접근이 불가하며 제공하는 함수를 통해 사용할 수 있으며 캡슐처럼 내부를 보호하고 있는 특성

 

#상속

부모의 기능을 자식이 물려받아 재사용하거나 재구성하여 사용하는 특성

 

#다형성 

역할과 구현으로 구분

ex) 자동차 역할 [역할] - K3, 아반떼, 테슬라 모델3 [구현]

클라이언트는 내부구조를 몰라도 되며, 구조가 변경되어도 영향을 받지 않음

자바에서는 역할(인터페이스), 구현(인터페이스를 구현한 클래스 혹은 객체)

인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 할 수 있음 

=> 즉 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있음

스프링에서 다형성을 극대화 하여 사용(제어의 역전[IoC], 의존주입[DI])

 

- 객체 지향 설계의 5가지 원칙(SOLID)

#SRP(단일 책임 원칙)

한 클래스는 하나의 책임만 가져야 함

=> 변경이 있을 때 파급효과가 작아야 함

 

#OCP(개방-폐쇄 원칙)

확장에는 열려 있어야 하며 변경에는 닫혀있어야함

다형성 활용

ex) 인터페이스를 구현한 클래스를 만들어 새로운 기능을 구현

구현 객체를 변경하려면 클라이언트 코드 변경해야함 => OCP원칙 위배

=> 연관 관계를 맺어주는 별도의 조립,설정자 필요

 

#LSP(리스코프 치환 원칙)

인터페이스 규약을 지키면서 하위 타입의 인스턴스로 변경이 가능해야 함

ex) 자동차 엑셀은 앞으로 가라는 기능이므로 뒤로 가면 LSP 위반

 

#ISP(인터페이스 분리 원칙)

특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 나음

인터페이스를 명확하게 정의

 

#DIP(의존관계 역전 원칙)

구현 클래스에 의존하지 말고 인터페이스 즉, 역할에 의존해야함

 

출처 : 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