ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [스프링 인 액션] Chapter 1 - 스프링 시작하기 :: 스프링 애플리케이션 초기 설정하기
    개발서적읽기/Spring in Action 제 5판 2020. 7. 28. 13:31




    ■스프링 애플리케이션 초기 설정

    mvnw.cmd


    메이븐 래퍼 스크립트. 메이븐이 각자 컴퓨터에 설치되어 있지 않더라도 


    이 스크립트를 사용하여 프로젝트를 빌드할 수 있다.


    (<parent> 하위의) <version>

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>

    'spring-boot-starter-parent를 부모 POM으로 한다'는 것을 의미.


    이 부모 POM은 스프링 프로젝트에 사용되는 여러 라이브러리의 의존성 관리를 제공한다.


    따라서 부모 POM이 제공하는 라이브러리들은 버전을 지정할 필요가 없다.


    또한 부모 POM이 제공하는 라이브러리들의 버전은 부모 POM의 버전을 계승한다.


    <artifactId>spring-boot-starter-??</artifactId>


    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    스프링 부트 스타터 의존성을 나타냄. 


    이 의존성 항목들은 자체적으로 라이브러리 코드를 갖지 않고 


    다른 라이브러리의 것을 사용한다.


    스타터 의존성은 다음 세 가지 장점이 있다.


    1. 필요로 하는 모든 라이브러리의 의존성을 선언하지 않아도 되므로 


    빌드 파일이 작아지고 관리하기 쉽다.


    2. 라이브러리의 이름이 아닌 기능의 관점으로 의존성을 생각할 수 있다.


    따라서 만일 웹 애플리케이션을 개발한다면 웹 애플리케이션을 작성할 수 있게 해주는 


    라이브러리들을 일일이 지정하는 대신 여기처럼 필요한 웹 스타터 의존성만 추가하면 된다.


    3. 라이브러리들의 버전을 걱정하지 않아도 된다. 스프링 부트에 포함되는 라이브러리들의 


    버전은 호환이 보장되므로, 사용하려는 스프링 부트의 버전만 신경 쓰면 된다.


    <build> 하위의 <plugin>

    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>

    메이븐을 사용하는 애플리케이션을 실행할 수 있게 해준다.


    의존성에 지정된 모든 라이브러리가 실행 가능 JAR 파일에 포함되어 있는지, 


    그리고 런타임시에 classpath 에서 찾을 수 있는지 확인한다.


    실행 가능 JAR 파일의 메인 클래스로 부트스트랩 클래스(예제의 TacoCloudApplication)를 


    나타내는 매니페스트 파일을 JAR파일에 생성한다.




    ■애플리케이션의 부트스트랩(구동)

    JAR 파일에서 애플리케이션이 실행되므로 제일 먼저 실행 가능한 


    부트스트랩 클래스가 있어야 한다.


    또한 애플리케이션을 부트스트랩하기 위한 최소한의 스프링 구성도 있어야 한다.


    부트스트랩 클래스인 TacoCloudApplication의 내용은 다음과 같다.

    package tacos;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication
    public class TacoCloudApplication {

    public static void main(String[] args) {
    SpringApplication.run(TacoCloudApplication.class, args);
    }

    }

    @SpringBootApplication 


    이 코드가 스프링 부트 애플리케이션임을 나타낸다.


    @SpringBootApplication 애노테이션은 다음 세 개의 애노테이션이 결합한 것이다.


    1.@SpringBootConfiguration : 현재 클래스를 구성 클래스로 지정. 


    @Configuration 애노테이션의 특화된 형태라고 할 수 있다.


    2.@EnableAutoConfiguration : 스프링 부트 자동-구성을 활성화한다.


    3.@ComponentScan : 컴포넌트 검색을 활성화한다. 


    클래스를 새로 생성할 때 @Component, @Controller, @Service 등의 


    애노테이션을 사용할 수 있게 해준다. 


    그러면 스프링은 자동으로 그런 클래스를 찾아 스프링 애플리케이션 컨텍스트에 


    컴포넌트로 등록한다.


    TacoCloudApplication의 main()은 JAR 파일이 실행될 때 호출되어 실행되는 메서드다.


    main 메소드는 실제로 애플리케이션을 시작시키고 스프링 애플리케이션 컨텍스트를 


    생성하는 SpringApplication 클래스의 run 메소드를 호출한다.


    run 메소드에 전달되는 두 개의 매개변수는 구성 클래스와 명령행 인자다.


    구성 클래스가 부트스트랩 클래스와 반드시 같아야 하는 것은 아니지만 


    대개 동일하게 지정한다.


    package tacos;

    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;

    @SpringBootTest
    class TacoCloudApplicationTests {

    @Test
    void contextLoads() {
    }

    }

    @SpringBootTest는 스프링 부트 기능으로 테스트를 시작하라는 것을 JUnit에 알려준다.

    댓글

Designed by Tistory.