6-keem
Gallery
About
© Powered by 6-keem

Spring Boot 개요

Backend
2025년 06월 03일
4분

Spring Framework

Series bookmark
  1. Spring 개요
  2. Spring 의존성 주입
  3. Spring MVC 패턴
  4. Spring MVC Web Form
  5. Spring JPA (Java Persistence API)
  6. Spring Entity Mapping
  7. Logging with SLF4J and Logback
  8. RESTful Web Service
  9. Restful Web Service with Spring
  10. Spring Boot 개요
  11. 첫 번째 Spring Boot 애플리케이션
  12. Spring Data JPA 사용하기
  13. Spring Security in Spring Boot 3
On this page
  • 1. Spring Boot란?
  • 2. 주요 기능
  • 2.1 Auto Configuration
  • 2.2 Easy Dependency Management (Starters)
  • 2.3 Embedded Servlet Container
  • 2.4 Spring Boot Actuator
  • 3. Bean 구성 방식
  • 3.1 XML 기반 설정
  • 3.2 어노테이션 기반 설정
  • 3.3 Java 기반 설정

이전 포스트
Restful Web Service with Spring
다음 포스트
첫 번째 Spring Boot 애플리케이션
thumbnail.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);
  }
}