시작계기
회사업무로 Java + Spring Boot 환경으로 세팅된 프로젝트를 인수인계 받아
개선건을 처리하던 중에 새로 추가된 DB 정보를 스프링 세팅해야하는 건이 있었는데
기본 설정이 세팅되어 있는 채로 작업하던 이전과는 다르게
해당 신규 DB 정보를 새로 세팅을 하려고하니 많은 삽질을 하게 되어
" 내가 스프링을 제대로 알지 못한 채로 사용하고 있었구나 " 싶어
제대로 스프링 공부를 해보려 이 포스팅을 시작하게 되었습니다.
※ 본 문은, 인프런 김영한 선생님의 [스프링 핵심 원리 - 기본편] 강의를 수강하여 작성되었습니다.
스프링 이란?
스프링은 어떤 특정한 하나가 아니라, 여러가지 기술들의 모음
가장핵심이 되는 스프링 프레임워크
여러가지 기능을 편리하게 사용하게 해주는 스프링 부트
Spring | Projects
Spring Framework Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more.
spring.io
스프링 이미지 아래에 강조로 표기한 내용을 설명하기 위해, Spring.io 사이트를 첨부하였다.
스프링 프레임워크의 이름은,
EJB 시절을 “겨울”에 빗대어 겨울 후의 “봄”으로
새로운 시작한다는 것을 의미하는 스프링(봄) 이라 지었다고 전해 들었는데,
그 이야기에 걸맞게, 정말 개발자들을 위한 기능들이 정말 많이 들어있다.
아래 기술들이 그 기능들이다.
스프링 데이터
crud를 편리하게 사용할 수 있도록 도와주는것
스프링 세션
세션 기능을 편리하게 사용할 수 있도록 도와주는 것
스프링 시큐리티
보안관련 기능
스프링 rest docs
api 문서랑 test를 편하게 엮어서 api 문서를 편하게 사용 할 수 있도록 도와주는 것
스프링 배치
배치처리에 특화된 기술
스프링 클라우드
클라우드 기술
위 기능들이 포함되어 있는 스프링 프레임 워크는 그 기능의 수 만큼 정말 방대한 몸집을 가지고 있다.
핵심기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타
웹 기술: 스프링 MVC, 스프링 WebFlux
데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
기술 통합: 캐시, 이메일, 원격접근, 스케줄링
테스트: 스프링 기반 테스트 지원
언어: 코틀린, 그루비
최근엔, 그런 스프링프레임워크를
스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용할 수 있다.
현재 재직중인 직장에서도
대부분의 프로젝트들 Java + Spring Boot로 이루어져 있을만큼
현업에서도 애용하는 Spring Boot는, 간단하게 아래와 같은 특징을 가지고 있다.
" 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 "
" Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 "
" 손쉬운 빌드 구성을 위한 starter 종속성 제공 "
" 스프링과 3rd parth(외부) 라이브러리 자동 구성"
(개인적으로 위 기능을 제일 좋아한다)
" 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공 "
" 관례에 의한 간결한 설정 "
스프링의 핵심 개념과 컨셉이 어떤 것이 묻는 다면 보통 아래와 같이 대답을 한다.
웹 애플리케이션 만들고 DB 접근 편리하게 해주는 기술?
전자정부 프레임워크?
웹 서버도 자동으로 띄워주고?
클라우드, 마이크로서비스?
하지만 김영한 선생님 강의에선 아래와 같이 이야기 한다.
스프링은 자바 언어 기반의 프레임워크
자바 언어의 가장 큰 특징 - 객체 지향 언어
스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
해당 강의에서도 강조하는 " 객체 지향"
가장 큰 장점이자, 가장 큰 특징인만큼
앞으로는 기존 세팅되어 있는 프로젝트를 단순히 사용만 하는 것이 아닌,
정확히 그 기능을 알고 사용을 하려 한다.
'개인공부 > Spring Boot' 카테고리의 다른 글
[Spring Boot - 기본편] 6강 - 스프링 핵심 원리 이해1 (비즈니스 요구사항과 설계) (0) | 2022.03.28 |
---|---|
[Spring Boot - 기본편] 5강 - 스프링 핵심 원리 이해1 (프로젝트 생성) (0) | 2022.03.28 |
[Spring Boot - 기본편] 4강 - 객체 지향 설계와 스프링 (0) | 2022.03.24 |
[Spring Boot - 기본편] 3강 - 좋은 객체 지향 설계의 5가지 원칙 (SOLID (0) | 2022.03.15 |
[Spring Boot - 기본편] 2강 - 좋은 객체 지향 프로그래밍이란? (0) | 2022.03.11 |
댓글