반응형
Spring 생태계
spring : 스프링 프로젝트들의 모음
다양한 스프링 프로젝트들을 확인할 수 있다. 모든 스프링 프로젝트는 스프링 프레임워크를 기반으로 동작한다.
Spring Framework
스프링 프레임워크를 사용하면 자바 기반의 어플리케이션을 만들 수 있고 개발자들은 비즈니스 로직에 집중할 수 있다.
EJB
- 2000년대 초반 등장. 스프링 같은 프레임워크
- 목적 : 비즈니스 로직과 앤터프라이즈 기술의 분리 → 편리한 애플리케이션 개발
- 실제
- 너무 비싸다
- 비즈니스 로직보다 EJB를 사용하기 위한 코드가 너무 많다
- EJB에 너무 의존적이고 종속적인 개발 → 기존 JAVA의 장점 못 살림(객체지향)
Spring
- 초기 설정만 잘 해두면 EJB와 동일한 기능을 제공하며 JAVA의 최대 장점인 객체지향 살려서 개발 가능
- 커져가는 스프링 생태계와 스프링 프레임워크 기능들 + 다양한 오프 소스의 등장으로 외부 라이브러라 사용↑ → 스프링으로 개발을 시작할 때 직접 해야 하는 설정이 너무 많아지고 복잡해졌다.
Spring Boot
- 스프링 부트를 사용하면 스프링 기반의 어플리케이션을 쉽게 만들 수 있다.
- 스프링을 이용한 개발에 필요한 복잡한 설정은 Spring Boot가 해 줌으로써 개발자는 즉시 어플리케이션 개발을 시작할 수 있게된다.
- 스프링 생태계에 포함되어있는 스프링 프로젝트 중 하나이기 때문에 단독으로 사용할 수 없고 항상 스프링 프레임워크와 같이 사용해야 한다.
제공하는 기능
1. 내장 서버
스프링 부트가 없던 시절에 만든 웹 애플리케이션을 배포할 경우
- WAS를 설치한다.
- 개발한 웹 애플리케이션 코드를 WAR로 빌드한다.
- 빌드한 WAR 파일을 WAS 폴더 하위에 넣는다.
- WAS를 실행한다.
스프링 부트
- 톰캣을 라이브러리로 포함하는 내장 톰캣 기능 제공
- war가 아닌 jar파일로 패키징 → main 메소드로 바로 실행 가능
- 별도로 WAS를 설치할 필요없이 main 메소드를 실행하면 웹 서버와 스프링을 띄울 수 있게 된다.
2. 편리한 의존성 & 권장 버전 관리
스프링 부트가 없던 시절에 개발을 한 번 시작할려면
- 어떤 라이브러리를 사용할지 고른다.
- 각 라이브러리의 버전도 고른다.
라이브러리 버전끼리 서로 호환이 되지 않는 경우도 있다.
스프링 부트
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.1'
id 'io.spring.dependency-management' version '1.1.5' // 버전 관리
}
위의 플러그인을 추가하면 아래처럼 버전 생략이 가능하다.
기본 라이브러리의 묶음을 제공한다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
spring-boot-starter-jdbc : JDBC, HikariCP 커넥션 풀 등
spring-boot-starter-web : 스프링 MVC, 내장 톰캣 등
3. 자동 구성
@Repository
public class ProductDao {
private final JdbcTemplate jdbcTemplate;
public ProductDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
JdbcTemplate을 Bean으로 등록한 적이 없다. 하지만 코드를 돌려도 문제가 발생하지 않는다.
어떻게 JdbcTemplate을 ProductDato에 주입하고 있는 걸까?
→ Spring Boot가 JdbcTemplate을 등록해준다.
Spring Boot의 자동 구성
- 일반적으로 자주 사용하는 수 많은 빈들을 자동으로 등록해주는 기능
- e.g) JdbcTemplate, DataSource, TransactionManger 등
- 스프링 부트는 spring-boot-autoconfigure라는 모듈을 통해 수 많은 자동 구성을 제공한다.
반응형
'Spring' 카테고리의 다른 글
[Spring] JdbcTemplate (0) | 2024.07.09 |
---|---|
[Spring] JDBC (0) | 2024.07.09 |
[Spring] Maven과 Gradle (0) | 2024.07.08 |
[Spring] Exception Handling (0) | 2024.07.05 |
Validation in Spring Boot (0) | 2024.07.02 |