24.12.03 TIL Spring, Spring Boot

신성훈·2024년 12월 3일
0

TIL

목록 보기
91/162

1. Spring이란?

Spring은 자바 기반의 엔터프라이즈 애플리케이션 개발을 위한 오픈 소스 프레임워크입니다.
주요 목표는 복잡한 자바 개발을 간소화하고, 객체 지향 프로그래밍을 효율적으로 활용할 수 있도록 지원하는 것입니다.


2. Spring의 주요 특징

  1. IoC (Inversion of Control)

    • 객체 생성 및 의존성 관리를 Spring Container가 담당
    • 객체 간 결합도를 낮춰 유지보수성을 높임
  2. DI (Dependency Injection)

    • 객체 의존성을 주입하여 코드의 재사용성과 테스트 용이성을 향상
  3. AOP (Aspect-Oriented Programming)

    • 로깅, 트랜잭션 관리 등의 부가 기능을 비즈니스 로직과 분리 가능
  4. 풍부한 모듈 지원

    • Spring MVC, Spring Data, Spring Security 등 다양한 모듈 제공

3. Spring Boot란?

Spring Boot는 Spring Framework를 기반으로 한 프로젝트 초기화와 설정 자동화 도구입니다.
Spring의 복잡한 설정을 간소화하고, 빠르게 애플리케이션을 개발 및 배포할 수 있도록 지원합니다.


4. Spring Boot의 주요 특징

  1. 자동 설정

    • Spring Boot는 애플리케이션이 실행될 때 필요한 설정을 자동으로 구성(Spring Boot Starter)
  2. 내장 웹 서버

    • Tomcat, Jetty와 같은 웹 서버를 내장하고 있어 별도의 설치 없이 실행 가능
  3. 의존성 관리

    • Spring Boot Starter를 사용하여 필요한 라이브러리들을 쉽게 추가 가능
  4. 독립 실행 가능

    • JAR 파일로 패키징하여 별도의 컨테이너 없이 실행 가능
  5. 간단한 프로덕션 준비

    • Actuator 모듈을 통해 애플리케이션 상태 및 메트릭 확인 가능

5. Spring vs Spring Boot

특성SpringSpring Boot
설정복잡한 XML 또는 Java Config 필요자동 설정 제공
서버 설정별도 서버 설치 필요내장 서버 제공
초기 설정 시간오래 걸림빠름
애플리케이션 실행외부 서버에서 실행독립적으로 실행 가능
학습 곡선상대적으로 높음상대적으로 낮음

6. Spring Boot로 개발 시 편리한 점

  1. 빠른 프로젝트 생성

    • Spring Initializr를 통해 몇 분 만에 프로젝트를 시작할 수 있음
  2. 간단한 의존성 관리

    • Spring Boot Starter로 여러 라이브러리의 의존성을 손쉽게 추가 가능
  3. 내장 Tomcat 사용

    • 별도의 설정 없이 애플리케이션 실행 가능
  4. 프로덕션 준비 도구

    • Actuator를 통해 애플리케이션 상태와 성능을 쉽게 모니터링 가능

7. Spring Boot의 예제 코드

Spring Boot를 사용한 기본 Controller 작성

import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  

@RestController  
@RequestMapping("/api")  
public class HelloController {  

    @GetMapping("/hello")  
    public String sayHello() {  
        return "Hello, Spring Boot!";  
    }  
}

8. 마무리

  • Spring의 복잡성을 이해: 처음에는 Spring의 설정 방식이 복잡하게 느껴졌지만, Spring Boot로 시작하며 빠르게 애플리케이션을 구현할 수 있었습니다.
  • 생산성 향상: 자동 설정과 내장 서버 덕분에 개발 속도가 크게 향상되었습니다.
  • 확장성: 다양한 Spring 모듈과의 통합이 쉬워 확장 가능한 애플리케이션을 구현할 수 있었습니다.
  • 배포의 간편함: 독립 실행형 JAR로 패키징해 배포 과정을 단순화할 수 있었습니다.
profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글