본문 바로가기
Spring

스프링이란?

by Alohawaii 2021. 11. 8.

스프링을 사용하고 있지만 왜 사용하고 장점이 무엇인지 아직 개념이 뚜렷하게 잡히지 않았기 때문에 이번 기회에 해당 인프런에서 김영한 님의 스프링 핵심 원리 - 기본 편을 수강하였고 수강한 내용을 정리하려고 한다. 

 

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

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

1. 스프링 프레임워크의 핵심기술은 di컨테이너, aop, 이벤트, 기타..  등이 있다.

 하지만 스프링의 진짜 핵심은 스프링은 자바 기반의 프레임워크이다.

 자바는 어떤 언어일까? 자바는 객체지향 언어이다. 

 따라서 스프링은 좋은 객체지향 애플리케이션을 개발하도록 도와주는 프레임워크이다.

 

2. 그렇다면 객체지향 프로그래밍이란 무엇일까?

 - 하나의 객체가 여러 가지 타입을 가질 수 있는 다형성, 객체의 속성, 메서드를 하나로 묶고 실제 구현 내용 일부를 외부에 감추어 은닉하는 캡슐화, 부모 객체의 속성과 메서드를 상속받아 그대로 사용하는 상속, 여러 객체에 공통적으로 사용되는 사용되어야 하는 내용을 뽑아내는 추상화 등이 있다.

 - 유연하고 변경에 용이하다. 변경에 용이하다는 것은 예를 들면 레고 블록처럼 부품을 갈아 끼울 수 있다는 것을 의미한다.

 

3. 많은 특징 중에 다형성에 주목한다.

  역할과 구현으로 세상을 구분하자, 예를 들면 운전자와 자동차, 공연 무대의 로미오 배역과 배우들

 클라이언트는 역할만 알고 내부구조는 몰라도 된다, 따라서 역할을 변경해도 클라이언트는 영향을 받지 않는다.

(자바에서 역할은 interface, 구현은 implements class이라고 생각하면 된다.)

 

==> 따라서 인터페이스 설계는 중요하다.

 

 4. 좋은 객체지향 설계의 원칙에는 solid라 부르는 5원칙이 있다.

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

     // 한 클래스는 하나의 책임만 가져야 한다.

  2) OCP(Open Close Principle) - 개방 폐쇄 원칙

    // 소프트웨어 요소는 확장에는 열려있고 변경에는 닫혀있어야 한다.

  3) LSP(Lscop Substitute Principle) - 리스 코프 치환 원칙

    // 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

    // 인터페이스의 규율을 지켜야 한다.

  4) ISP(Interface Separator Principle) - 인터페이스 분리 원칙

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

  5) DIP(Dependency Injection Principle) - 의존관계 역전 원칙

   // 프로그래머는 추상화에 의존해야지 구체화에 의존해서는 안된다.

   // 구현보다는 역할에 집중하라

 

 하지만 자바의 다형성만으로는 ocp와 dip를 만족하는데 한계가 존재한다.

스프링은 DI(의존성관계 주입), DI 컨테이너를 제공함으로써 ocp, dip를 가능하도록 지원한다.

 

 

 

 

 

'Spring' 카테고리의 다른 글

@Transactional이란?  (0) 2026.03.10
[Spring] 의존관계 자동주입  (0) 2022.01.03
20210226  (0) 2021.02.28
20210225  (0) 2021.02.26
20210224  (0) 2021.02.26