반응형

 

Spring  생태계

spring : 스프링 프로젝트들의 모음

Spring 홈페이지 - overview

다양한 스프링 프로젝트들을 확인할 수 있다. 모든 스프링 프로젝트는 스프링 프레임워크를 기반으로 동작한다.

 

 


Spring Framework

스프링 프레임워크를 사용하면 자바 기반의 어플리케이션을 만들 수 있고 개발자들은 비즈니스 로직에 집중할 수 있다.

 

EJB

  • 2000년대 초반 등장. 스프링 같은 프레임워크
  • 목적 : 비즈니스 로직과 앤터프라이즈 기술의 분리 → 편리한 애플리케이션 개발
  • 실제
    • 너무 비싸다
    • 비즈니스 로직보다 EJB를 사용하기 위한 코드가 너무 많다
    • EJB에 너무 의존적이고 종속적인 개발 → 기존 JAVA의 장점 못 살림(객체지향)

 

Spring

  • 초기 설정만 잘 해두면 EJB와 동일한 기능을 제공하며 JAVA의 최대 장점인 객체지향 살려서 개발 가능
  • 커져가는 스프링 생태계와 스프링 프레임워크 기능들 + 다양한 오프 소스의 등장으로 외부 라이브러라 사용↑    →    스프링으로 개발을 시작할 때 직접 해야 하는 설정이 너무 많아지고 복잡해졌다.

 

 


Spring Boot

  • 스프링 부트를 사용하면 스프링 기반의 어플리케이션을 쉽게 만들 수 있다.
  • 스프링을 이용한 개발에 필요한 복잡한 설정은 Spring Boot가 해 줌으로써 개발자는 즉시 어플리케이션 개발을 시작할 수 있게된다.
  • 스프링 생태계에 포함되어있는 스프링 프로젝트 중 하나이기 때문에 단독으로 사용할 수 없고 항상 스프링 프레임워크와 같이 사용해야 한다.

 

제공하는 기능

 

1. 내장 서버

 

스프링 부트가 없던 시절에 만든 웹 애플리케이션을 배포할 경우

  1. WAS를 설치한다.
  2. 개발한 웹 애플리케이션 코드를 WAR로 빌드한다.
  3. 빌드한 WAR 파일을 WAS 폴더 하위에 넣는다.
  4. WAS를 실행한다.

스프링 부트

  • 톰캣을 라이브러리로 포함하는 내장 톰캣 기능 제공
  • war가 아닌 jar파일로 패키징 → main 메소드로 바로 실행 가능
    • 별도로 WAS를 설치할 필요없이 main 메소드를 실행하면 웹 서버와 스프링을 띄울 수 있게 된다.

 

2. 편리한 의존성 & 권장 버전 관리

스프링 부트가 없던 시절에 개발을 한 번 시작할려면

 

 

 

 

 

  1. 어떤 라이브러리를 사용할지 고른다.
  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