[Spring] Spring Boot란?

in_ho_·2023년 10월 30일
0

Spring

목록 보기
2/4
post-thumbnail

1. Spring Boot

  • 스프링 부트는 스프링 프레임워크의 범위를 포함한다.
  • 스프링 부트는 스프링 프레임워크를 기반으로 개발된 프레임워크이다.
  • 아래의 항목은 스프링 부트가 추가적으로 제공하는 기능이다.

1-1. 단독 실행 가능한 스프링 애플리케이션

  • 스프링 부트 프로젝트는 빌드 플러그인을 제공하고, 이를 실행하면 단독 실행 가능한 JAR 파일을 만들 수 있다.

1-2. 간편 설정을 위한 '스타터' 의존성 제공

  • 스타터 내부에 라이브러리 의존성 설정을 포함하고 있어, 기능을 사용하는데 필요한 모든 라이브러리를 한 번에 추가할 수 있다.

1-3. 스프링 기능을 자동 설정하는 '자동 구성' 제공

  • 스프링 부트는 자동 구성 기능을 제공한다.
  • 특정 조건이 충족되면 미리 설정된 자바 설정 클래스가 동작하고, 애플리케이션을 구성한다.

1-4. 액추에이터

  • 스프링 부트는 spring-boot-actuator 모듈을 제공하는데 이를 사용하여 서버를 모니터링할 수 있다.

1-5. XML 설정을 위한 일이 없음

  • 스프링 프레임워크를 이용할 때 ApplicationContext 설정을 XML로 작성했습니다.
  • 하지만 스프링 프레임워크 3.0부터 Java 클래스를 이용하여 설정하는 Java Config 방식의 등장하였습니다.

1-6. 내장 WAS

  • spring-boot-starter-web에 Tomcat이 내장되어 있기 때문에 Dev, Stage, Production 환경에서 일관된 실행 환경을 가질 수 있습니다.

    Tomcat이 아닌 Jetty나 UnderTow와 같은 것들로 쉽게 변경할 수 있습니다.

2. Spring Boot 생산성에 도움을 주는 라이브러리

  1. spring-boot-devtools
    • 애플리케이션 실행 후 클래스패스에 포함된 파일이 변경되면 자동으로 애플리케이션을 재시작
    • 리소스가 변경되면 자동으로 새로고침
    • 웹 서비스에서 사용하는 캐시를 자동으로 막아줌.

      실제 환경에는 배포되지 않도록 해야함.

  2. spring-boot-configuration-processor
    • application.yml이나 application.properties 파일은 편집할 때 IDE에서 자동으로 완성해줌.
  3. lombok
    • 반복해서 생성해야 하는 코드들을 줄여줌.

3. pom.xml 분석

<groupId>...</groupId>
<artifactId>...</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>...</name>

<!-- 부모 POM 가져오기 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.9</version>
	<relativePath/>
</parent>

<!-- 의존성 추가 -->
<dependencies>
	<dependency>
        <groupId>org.springframwork.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

<!-- Build Tool 관련 영역 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
  • 자식 pom.xml은 부모 pom.xml 파일에 설정된 의존 관계를 그대로 상속 받을 수 있습니다.(자식 pom.xml에 설정된 의존관계가 우선권을 가집니다.)
    -> 이러한 코드들을 나타내는 부분이 <parent> ~ </parent>입니다.

4. @SpringBootApplication

  • 스프링 부트는 엔트리 포인트를 제공합니다.
@SpringBootApplication
public class ApiApplication {
   public static void main(String[] args) {
       SpringApplication.run(ApiApplication.class, args);
   }
}
  • @SpringBootApplication은 3개의 주요한 어노테이션을 포함합니다.

4-1. @SpringBootConfiguration

  • 내부에는 @Configuration을 포함하고 있습니다. @Configuration이 명시된 클래스는 자바 설정 클래스로 여겨지며, 별도의 스프링 빈을 정의할 수 있습니다.

4-2. @EnableAutoConfiguration

  • 스프링 부트 프레임워크의 자동 설정 기능을 활성화하는 기능을 제공합니다.

4-3. @ComponentScan

  • 클래스패스에 포함되어 있는 @Configuration으로 정의된 자바 설정 클래스와 스테리오 타입 어노테이션(@Component)로 정의된 클래스를 스캔합니다.
  • 스프링 빈 설정을 스캔하며 찾아낸 것들은 스프링 빈 컨테이너가 스프링 빈으로 로딩하고 관리합니다.

0개의 댓글