본문 바로가기
Kotlin Spring/Kotlin Spring 강의 내용

2) Spring Boot란? (맛보기)

by Bill Lab 2025. 8. 25.
728x90

1. Spring 이란?

    : Spring Framework는 자바 기반의 엔터프라이즈 애플리케이션 개발을 위한 핵심 프레임워크로,

     IoC(제어의 역전)와 DI(의존성 주입), AOP 등을 통해 유연하고 확장성 있는 애플리케이션 개발을

     지원하는 기술

 

2. Spring Boot 란?

     - Spring Boot는 Spring Framework를 더 쉽게 사용할 수 있도록 만든 도구.

     - 설정을 최소화하고, 빠르게 실행 가능한 애플리케이션을 만들 수 있음.

     - 핵심 특징

         1) 자동 설정(Auto Configuration): 의존성 기반 자동 Bean 등록

         2) 내장 서버(Embedded Server): Tomcat/Jetty 등을 내장 → 별도 WAS 필요 없음

         3) 독립 실행형 JAR: java -jar 실행 가능

         4) 의존성 관리(Starter): spring-boot-starter-web, spring-boot-starter-data-jpa 등 제공

https://docs.spring.io/spring-boot/index.html

 

Spring Boot :: Spring Boot

Spring Boot helps you to create stand-alone, production-grade Spring-based applications that you can run. We take an opinionated view of the Spring platform and third-party libraries, so that you can get started with minimum fuss. Most Spring Boot applicat

docs.spring.io

 

3. 주요 구성 요소

      - SpringApplication → 앱 실행 진입점

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

@SpringBootApplication
class Application

fun main(args: Array<String>) {
    // 앱 실행 시작점
    runApplication<Application>(*args)
}

 

      - @SpringBootApplication

        : @Configuration, @EnableAutoConfiguration, @ComponentScan 결합

@SpringBootApplication
class Application

// 내부적으로 포함된 애노테이션들
// @Configuration          → Bean 정의 클래스
// @EnableAutoConfiguration → 자동 설정 활성화
// @ComponentScan           → @Component, @Service, @Repository 스캔

 

      - 자동 구성(Auto Configuration) → 환경에 맞게 Bean 자동 주입(자동으로 Bean이 등록되지만, 필요하면 직접 설정 가능)

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.client.RestTemplate

@Configuration
class AppConfig {
    @Bean
    fun restTemplate(): RestTemplate = RestTemplate()
}

 

      - 프로파일(Profile) → application-dev.yml, application-prod.yml로 환경별 분리

//application-dev.yml
server:
  port: 8081
spring:
  config:
    activate:
      on-profile: dev



//application-prod.yml
server:
  port: 8082
spring:
  config:
    activate:
      on-profile: prod

 

      - Actuator → 운영/모니터링 기능 제공 (health, metrics)

//build.gradle.kts
dependencies {
    implementation("org.springframework.boot:spring-boot-starter-actuator")
}

//application.yml
management:
  endpoints:
    web:
      exposure:
        include: health,info

 

4. 기본 구조

//패키지 구조
src/main/kotlin/com/example/demo
 ┣ Application.kt   // 메인 진입점
 ┣ controller/HelloController.kt
 ┣ service/HelloService.kt
 ┗ resources/
     ┣ application.yml
     
     
     
//application.yml
server:
  port: 8080
spring:
  application:
    name: demo-app



//Rest API 예시
package com.example.demo.controller

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

@RestController
class HelloController {
    @GetMapping("/hello")
    fun hello(): String = "Hello, Spring Boot with Kotlin!"
}



//실행
./gradlew bootRun

 

 

 

 

 

(상기 외 AOP, Spring Data(JPA, JDBC), Spring MVC, Spring Security, Spring Test 등이 더 있지만, 차차 배워보는걸로!

- 예시별 사용 방법을 학습하기)

728x90