KEEM

  • 홈
  • 블로그
  • 갤러리
  • 프로필
© Powered by 6-keem
2025-06-03
Backend

Spring Boot 개요

Spring Boot의 주요 기능과 자동 설정, 스타터, 액추에이터 정리
Spring Boot 개요

이전 포스트
Restful Web Service with Spring
다음 포스트
첫 번째 Spring Boot 애플리케이션

Spring Framework

Series bookmark
  1. 스프링 시큐리티
  2. Spring Data JPA 사용하기
  3. 첫 번째 Spring Boot 애플리케이션
  4. Spring Boot 개요
  5. Restful Web Service with Spring
  6. RESTful Web Service
  7. Logging with SLF4J and Logback
  8. Spring Entity Mapping
  9. Spring JPA (Java Persistence API)
  10. Spring MVC Web Form
  11. Spring MVC 패턴
  12. Spring 의존성 주입
  13. Spring 개요
f09d6d318404cf16.png
교과목 내용을 정리하기 위한 글입니다. 틀린 내용이 있을 수 있으니 참고하세요

1. Spring Boot란?

Spring Boot는 Spring 애플리케이션을 빠르게 시작할 수 있도록 돕는 Opinionated(선호 기반) 접근 방식을 제공합니다.

  • 최소한의 설정으로 빠른 개발 환경 구축
  • 자동 구성(Auto Configuration): application.properties와 클래스패스를 기반으로 필요한 빈(bean)을 자동 등록
  • 의존성 충돌 해결 지원
  • 내장 서버 제공: 별도 서버 설치 없이 myapp.jar로 실행 가능
# 실행 예시
java -jar mycoolapp.jar

2. 주요 기능

2.1 Auto Configuration

기존 Spring MVC나 JPA 설정을 반복적으로 작성하던 것을 Spring Boot가 자동화합니다.

  • 클래스패스에 spring-webmvc가 있으면 DispatcherServlet 자동 등록
  • 임베디드 데이터베이스(H2, HSQL) 드라이버가 있으면 DataSource 자동 생성
<!-- 기존 web.xml에 작성하던 DispatcherServlet 설정 예 -->
<servlet>
  <servlet-name>appServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>appServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

Spring Boot에서는 다음과 같이 간단히 애너테이션만 추가하면 자동 구성이 활성화됩니다.

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2.2 Easy Dependency Management (Starters)

Spring Boot 스타터(starter)는 자주 사용하는 라이브러리를 호환 가능한 버전으로 묶어 제공합니다.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • 포함 내용 예시: Spring Core, Spring MVC, Jackson, Hibernate Validator, Tomcat(내장), 로깅(Logback, SLF4J)
  • 30여 개 이상의 스타터 제공 (예: spring-boot-starter-data-jpa, spring-boot-starter-security 등)

2.3 Embedded Servlet Container

  • main() 실행 시 내장 Tomcat 구동
  • 패키징 타입 jar로 배포 가능 (WAR 불필요)
<packaging>jar</packaging>

2.4 Spring Boot Actuator

애플리케이션 모니터링·관리용 REST 엔드포인트를 자동 노출합니다.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
엔드포인트설명
/actuator/health애플리케이션 상태 확인
/actuator/beans등록된 빈 목록 확인
/actuator/mappingsURL 매핑 정보 확인
/actuator/metrics메트릭 정보 확인
# application.properties 예시
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans
info.app.name=MyApp
info.app.version=1.0.0

3. Bean 구성 방식

3.1 XML 기반 설정

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://localhost:3306/test"/>
  <property name="username" value="root"/>
  <property name="password" value="secret"/>
</bean>

3.2 어노테이션 기반 설정

@Service
public class UserService {
  @Autowired
  private UserDao userDao;
}
 
@Repository
public class UserDao {
  @Autowired
  private DataSource dataSource;
}

3.3 Java 기반 설정

@Configuration
public class AppConfig {
  @Bean
  public DataSource dataSource() {
    BasicDataSource ds = new BasicDataSource();
    ds.setDriverClassName("com.mysql.jdbc.Driver");
    ds.setUrl("jdbc:mysql://localhost:3306/test");
    ds.setUsername("root");
    ds.setPassword("secret");
    return ds;
  }
 
  @Bean
  public UserDao userDao(DataSource dataSource) {
    return new JdbcUserDao(dataSource);
  }
 
  @Bean
  public UserService userService(UserDao dao) {
    return new UserService(dao);
  }
}