About Spring, SpringBoot +
영한님 강의를 들으면 누구나 앵무새처럼 잘 따라 만들고, 따라 말할 수 있다. 그러니까 그 이상의 것을 해내야한다! - 스프링 프로젝트 주제하나 정해서 만들어보기?!
단순히 스프링의 기능을 알아보는 것이 아니라 객체 지향 개념과 스프링이 이것을 어떻게 지원하는지 알아본다! 재밌을 것 같다!
스프링의 핵심 가치 : 객체 지향 프로그래밍
좋은 객체 지향의 원리와 스프링 컨테이너가 필요한 이유도 이해한다. SOLID, IOC, DI
스프링 기본 기능 학습 스프링 본질 깊은 이해 객체 지향 설계를 고민하는 개발자로 성장
⭐️스프링의 핵심
자바 언어 기반의 프레임워크
자바 언어의 가장 큰 특징 : 객체 지향 언어
스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
객체 지향 특징
추상화
캡슐화
상속
다형성
객체 지향 프로그래밍
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.(협력)
객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. => 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법
다형성(Polymorphism) 책으로만 배우지 말고 ! 피부로 느껴보기! : 역할과 구현을 분리⭐️ - 실세계의 역할과 구현이라는 편리한 컨셉을 다형성을 통해 객체 새상으로 가져올 수 있다. - 유연하고, 변경이 용이하다. - 확장 가능한 설계 - 클라이언트에 영향을 주지 않는 변경 가능 - 인터페이스를 안정적으로 잘 설계하는 것이 중요⭐️ 한계 - 역할(인터페이스) 자체가 변하면, 클라이언트, 서버 모두에 큰 변경이 발생한다. - 자동차를 비행기로 변경해야 한다면? - 대본 자체가 변경된다면? => 인터페이스를 안정적으로 잘 설계하는 것이 중요하다. 장점 - 클라이언트는 대상의 역할(인트페이스)만 알면 된다. - 클라이언트는 구현 대상의 내부 구조를 몰라도 된다. - 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다. - 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.
자바 언어의 다형성을 활용한다! 역할 = 인터페이스 구현 = 인터페이스를 구현한 클래스, 구현 객체
객체를 설계할 때 역할과 구현을 명확히 분리
객체 설계시 역할(인터페이스)을 먼저 부여하고, 그 역할을 수행하는 구현 객체 만들기
객체의 협력이라는 관계부터 생각한다!
혼자 있는 객체는 없다.
클라이언트 : 요청, 서버 : 응답
수많은 객체 클라이언트와 객체 서버는 서로 협력 관계를 가진다.
자바언어의 다형성 - 오버라이딩 오버로딩 : 메서드 여러개 재정의(여러개 중복해서 구현) 오버라이딩 : 오버로딩을 넘어서 타버린다!재정의한다.
다형성의 본질⭐️
인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다.
다형성의 본질을 이해하려면 협력이라는 객체 사이의 관계에서 시작해야함
클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다.⭐️
다형성의 실세계 비유
스프링과 객체 지향(스프링 등장배경)
다형성이 가장 중요하다!
스프링은 다형성을 극대화해서 이용할 수 있게 도와준다.
스프링에서 이야기하는 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다.
스프링 부트
스프링을 편리하게 사용할 수 있도록 지원. 최근에는 기본으로 사용
단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨.
손 쉬운 빌드 구성을 위한 starter 종속성 제공 예전에는 이런 저런 라이브러리를 사용하고자 한다며 이것저것 라이브러리 다 추가해서 써야했다.현재는 springboot xxx-starter, springboot aop-starter, springboot data-jpa-starter 등등 start 라이브러리 하나마나 가져오면 나머지들도 함께 오도록 편하게 잘 구성했다.
스프링과 3rd party(외부) 라이브러리 자동 구성
메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
관례에 의한 간결한 설정
Last updated