Spring Initializer로 Spring Boot 프로젝트를 쉽게 생성하는데, 어딘지 모르게 죄책감이 든다.
나는 과연 Spring과 Spring Boot의 차이를 알고 매일 이렇게 쉽게 이용하는 것인가.
누군가 물어보면 쉽게 대답할 수 있는가? 했을 때 자신이 없어 이참에 알아보기로 하였다.
Spring
- 자바를 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크
- 중복코드의 사용률을 줄여주고 비즈니스 로직을 더 간단하게 한다.
- 프레임워크? 자주 쓰일만한 기능들을 한데 모아 놓은 클래스들의 집합으로 기본적인 설계나 필요한 라이브러리를 제공한다.
- 중복코드의 사용률을 줄여주고 비즈니스 로직을 더 간단하게 한다.
- 특징
- 의존성 주입(Dependency Injection)
- 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정 파일을 통해 정의되는 방식
- 어노테이션, 설정파일을 통해
- 제어의 역전(IOC, Inversion Of Control)
- 객체 생명주기 관리를 개발자가 하지 않고 컨테이너가 대신 해주는 것
- 필요한 부분을 적절한 상황에 따라 자유롭게 교체할 수 있음
- MyBatic를 쓰던 JPA를 쓰던 Oracle Database를 쓰던...
- 필요한 부분을 적절한 상황에 따라 자유롭게 교체할 수 있음
- 객체 생명주기 관리를 개발자가 하지 않고 컨테이너가 대신 해주는 것
- 관점 지향 프로그래밍 (Aspect Object Programming)
- 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리
- POJO (Plain Old Java Object)
- 객체 지향 원리에 충실하되, 특정 환경에 종속되지 않고 순수 자바로 설계된 객체
- 의존성 주입(Dependency Injection)
Spring Boot
- 스프링 프레임워크를 기반으로 바로 실행가능한 애플리케이션을 쉽게 만들도록 도와줍니다. 스프링 관련된 복잡한 설정을 자동으로 처리해서 개발자는 최소한의 설정만 진행하도록 할 수 있게 하는 스프링 프레임워크의 서브 프로젝트
- (단독 실행 가능 스프링애플리케이션 생성 + 최소한의 초기 스프링 구성)
- 생성 배경
- 스프링으로 애플리케이션을 개발하려면 사전에 많은 작업을 해야 했음 (비즈니스 로직에만 더 집중하고 싶음)
- 웹 애플리케이션 개발에 필요한 라이브러리와 그 라이브러리에 종속된 라이브러리들을 개발자가 일일이 추가해야만 했음
- 버전이 다르거나 충돌이 나는 경우가 있어 개발 환경 구성에 어려움이 존재하였음
- 비즈니스 로직보다 개발환경 구성 및 스프링의 기능 구성에 시간을 쏟게 됨
- Transaction Manager
- Hibernate - spring-boot-starter-data-jpa
- Entity Manager
- Spring MVC
- 장점
- 프로젝트에 따라 자주 사용되는 라이브러리들이 미리 조합됨
- Spring MVC, Jackson Databind, Hibernate 코어 및 Log4j
- 복잡한 설정을 자동으로 처리
- 내장 서버를 포함해서 톰캣과 같은 서버를 추가로 설치하지 않아도 바로 개발이 가능
- JAR파일로 웹 애플리케이션 개발이 가능
- 스프링의 jar 파일이 클래스 패스에 있는 경우 Spring Boot는 Dipatcher Servlet으로 자동 구성
- 프로젝트에 따라 자주 사용되는 라이브러리들이 미리 조합됨
출처
책 - 스프링부트 시작하기
https://goddaehee.tistory.com/238
https://jerryjerryjerry.tistory.com/62
'스프링' 카테고리의 다른 글
Spring Data JPA / Dynamic DataSource 설정 (0) | 2022.03.28 |
---|---|
OSIV / @Transactional / Multi Datasource (0) | 2022.03.08 |
SpringBoot i18n - 다국어 설정 DB/ehcache/CookieLocaleResolver (0) | 2020.10.21 |
SpringBoot Maven 프로젝트 Code Pipeline으로 자동빌드&배포 (0) | 2020.05.08 |
Spring의 기본개념과 동작원리 + 자기반성 (0) | 2020.04.29 |