본문 바로가기
Develop/Spring+JPA

Java Spring 기초 개념

by 연로그 2020. 12. 29.
반응형

Java Spring을 왜 사용하는가? Spring이 무엇인가?에 대해서

 

스프링 기술

기술명 설명
프레임워크 핵심
부트 여러 스프링 기술 편리하게 사용하도록 help
데이터 CRUD 사용 편리하게
세션 세션 기능 편리하게
시큐리티 보안 관련
Rest Docs API 문서화
배치 배치 처리 특화
클라우드 클라우드 관련

 

등등 여러가지 기능이 있다.

spring.io/projects에 들어가면 더 많은 것을 볼 수 있음.

 

스프링 프레임워크

- 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, ..

- 웹 기술: 스프링 MVC, ...

- 데이터 접근 기술: 트랜잭션, JDBC, XML, ...

- 기술 통합

- 테스트

- 언어: 코틀린, 그루비

스프링 부트

스프링 편리하게 사용할 수 있도록 지원.

- 톰캣 같은 별도의 웹서버 설치할 필요 x

- 편리한 빌드 구성을 위한 starter 종속성 제공.

ex: 한 라이브러리를 추가하면 관련된 라이브러리들까지 한꺼번에 가져올 수 있도록

 

스프링을 사용하는 이유?

- '객체 지향' 특성을 살려내는 프레임워크

( 스프링 이전에 사용하던 EJB는 사용이 너무 어려움

 +EJB에 종속적이라 자바의 객체 지향 특성을 다 죽임 )

- 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

 

 

좋은 객체 지향이란?

유연하고 변경이 용이

ex: 기계 부품 갈아 끼우듯

- 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법

역할, 구현 분리

- 역할(=인터페이스), 구현(=인터페이스를 구현한 클래스/객체) 분리

- 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다.

- 한계: 역할 자체가 변하면 클라이언트, 서버 모두에 큰 변경

자바 언어의 다형성

오버라이딩: 메소드 재정의

(!=오버로딩: 메소드 여러개 정의)

- 인터페이스를 구현한 객체를 실행 시점에 유연하게 변경

SOLID

: 좋은 객체 지향의 5가지 원칙

단일 책임 원칙; SRP; Single Responsibility Principle

한 클래스는 하나의 책임만 가진다.

변경이 있을 때 파급 효과가 적다.

개방 폐쇄 원칙; OCP; Open/Closed Principle

sw 요소는 확장에는 열려 있고 변경에는 닫혀 있어야 한다.

인터페이스를 구현한 새로운 클래스를 하나 만들어서 새 기능 추가

(다형성의 역할/구현 분리하자는 말과 유사)

but, 클라이언트가 구현 클래스를 직접 선택하는 경우, 구현 객체 변경을 원하면 클라이언트 코드 변경해야 한다.

-> 객체 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자 필요 (spring이 지원! DI Container 등)

리스코프 치환 원칙; LSP; Liskov Substitution Principle

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

하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것.

(ex: 악셀을 밟으면 앞으로 간다는 규약-> 뒤로 간다는 기능으로 구현 x)

인터페이스 분리 원칙; ISP; Interface Segregation Principle

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

의존관계 역전 원칙DIP; Dependency Inversion Principle

추상화에 의존 o. 구현에 의존 x

클라이언트는 인터페이스를 보게 하고, 구현한 것을 보는 것은 x. (역할에 의존하게 해라)

스프링과 객체 지향

다형성을 극대화

- 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용해 역할/구현을 편리하게 함

 

 

 


본 글은 김영한님의 유료 강의를 들으며 요약, 정리를 목적으로 작성한 것으로 홍보나 금전적 목적이 없습니다.

제 방식으로 정리한 것으로 강의 내용을 추가/삭제/변경된 부분이 많으며 자세한 설명은 강의 구매를 추천 드립니다.

 

참고: inflearn / 김영한 / 스프링 핵심 원리 기본편

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

 

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

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온

www.inflearn.com

 

반응형