본문 바로가기
Spring Boot

Spring Boot

by 귤장수 2025. 5. 13.
반응형

Spring Boot

Spring Framework: 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크

Spring Boot: 복잡한 설정 없이 Spring 기반 프로젝트를 쉽고 빠르게 생성·구동·배포하도록 도와주는 라이브러리

1. 프로젝트 시작하기

1.1 웹에서 초기화

  • URL: start.spring.io
  • Dependencies 선택 후 Generate 클릭 → ZIP 다운로드 → IDE에서 열기

1.2 IntelliJ IDEA로 초기화

  1. New ProjectSpring Initializr
  2. Name, Location, Language(Java/Kotlin/Groovy), Build Tool(Maven/Gradle) 설정
  3. Group(역도메인, ex: com.example), Artifact(프로젝트명) 입력
  4. Java 버전, Packaging(JAR/WAR), Dependencies 선택 → Finish

Tip: 빌드 관리 도구(Maven/Gradle)는 의존성 관리·자동 다운로드·패키징을 지원합니다.

2. 프로젝트 구성

  • 이름(Name): 프로젝트 명
  • 위치(Location): 초기화할 디렉터리 경로
  • 언어(Language): Java | Kotlin | Groovy
  • 빌드 관리 도구(Build Tool): Gradle(Groovy/Kotlin) | Maven

💡 빌드 관리 도구란?

XML, properties, JAR 등 파일을 JVM·WAS가 인식할 수 있도록 패키징하고,

라이브러리 의존성 버전·종속성을 설정 파일로 관리·자동 다운로드해 주는 도구입니다.

  • Group: 회사 도메인명 역순 (예: com.example, 실 프로젝트는 huko.local 등)
  • Artifact: 보통 프로젝트명과 동일하게 설정
  • JDK(Java Development Kit): Java 개발에 필요한 컴파일러·라이브러리·툴킷
    • 예시: OpenJDK 1.8 사용 (최신 Java는 18)
  • Packaging: JAR(default)

💡 배포 패키지

Jar(Java Archive): 설정 파일과 클래스 파일을 하나로 압축해 실행 가능한 단일 파일로 생성

War(Web Application Archive): 외부 WAS에 배포 가능한 형태 (Spring Boot는 내장 Tomcat으로 JAR로도 배포 가능)

💡 Lombok

Java 언어에서 반복되는 getter/setter, toString, 생성자 코드를 어노테이션으로 자동 생성해 주는 라이브러리


3. 주요 개념 & 구성 요소

3.1 스타터(Starter)

  • 자주 쓰이는 라이브러리 의존성을 묶은 패키지
  • 예:
    • spring-boot-starter-web → Spring MVC + 내장 Tomcat
    • spring-boot-starter-data-jpa → Spring Data JPA + Hibernate
    • spring-boot-starter-security → Spring Security
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

3.2 오토-설정(Auto-Configuration)

  • @SpringBootApplication에 포함된 @EnableAutoConfiguration
  • 클래스패스·설정정보 기반으로 필요한 Bean을 자동 등록

3.3 내장 서버(Embedded Server)

  • 기본: 내장 Tomcat 활용
  • 선택 가능 서버: Undertow, Jetty
  • WAR Packaging 시 외부 WAS 배포 지원

3.4 설정 파일 & 프로파일

  • 위치: src/main/resources/application.properties 또는 application.yml
  • 예시:
  • server.port=8081 spring.datasource.url=jdbc:... spring.jpa.hibernate.ddl-auto=update
  • 프로파일:
    • application-dev.yml, application-prod.yml
    • 실행 시 -spring.profiles.active=prod

3.5 개발 생산성 도구

  • DevTools (spring-boot-devtools): 코드 변경 시 자동 재시작, LiveReload 지원
  • Spring Boot CLI: Groovy 스크립트 기반 빠른 프로토타이핑

3.6 모니터링 & 관리 (Actuator)

  • spring-boot-starter-actuator 추가 시 자동 엔드포인트 생성
  • 주요 엔드포인트: /actuator/health, /metrics, /info
  • 노출 설정:
  • management.endpoints.web.exposure.include=health,info,metrics management.endpoint.health.show-details=always

3.7 로깅 (Logback)

  • 기본 로거: Logback
  • 커스터마이징: application.properties 또는 logback-spring.xml

4. 빌드·패키징

  • Fat JAR
  • ./mvnw clean package java -jar target/app-0.0.1-SNAPSHOT.jar
  • WAR
    • pom.xml <packaging>war</packaging> 설정
    • SpringBootServletInitializer 상속 후 configure() 구현

5. 테스트 지원

  • 통합 테스트: @SpringBootTest
  • 슬라이스 테스트:
    • @WebMvcTest (Controller)
    • @DataJpaTest (Repository)
    • @RestClientTest

6. 기타 유용한 라이브러리

  • Lombok: @Getter/@Setter/@ToString 등 보일러플레이트 제거
  • Validation: spring-boot-starter-validation + @Valid, @NotNull
반응형

'Spring Boot' 카테고리의 다른 글

어노테이션(Annotation)  (0) 2025.05.13

댓글