반응형
Spring Boot
Spring Framework: 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
Spring Boot: 복잡한 설정 없이 Spring 기반 프로젝트를 쉽고 빠르게 생성·구동·배포하도록 도와주는 라이브러리
1. 프로젝트 시작하기
1.1 웹에서 초기화
- URL: start.spring.io
- Dependencies 선택 후 Generate 클릭 → ZIP 다운로드 → IDE에서 열기
1.2 IntelliJ IDEA로 초기화
- New Project → Spring Initializr
- Name, Location, Language(Java/Kotlin/Groovy), Build Tool(Maven/Gradle) 설정
- Group(역도메인, ex: com.example), Artifact(프로젝트명) 입력
- 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 |
---|
댓글