View
maven은 기본적으로 src/main/java 안에 있는 소스를 컴파일한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.stereotype.*; import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Example.class, args); } } | cs |
위 코드는 spring boot의 가장 기본적인 동작 코드이다.
- @RestController : stereotype annotation. 스테레오 타입 애노테이션이란 annotation이 선언되어있는 클래스가 component scanning의 대상이고 spring으로 관리될 것임을 의미한다. RestController의 역할은 spring에게 '여기 controller를 선언해 놓았으니 웹에서 요청이 들어오면 이 클래스로 처리해' 라는 뜻이다. 또한 메소드에서 return되는 string을 렌더링하라고 spring에게 지시한다.
- @RequestMapping : routing 정보를 제공한다. 'HTTP요청이 내가 지정한 값(여기서는 "/")으로 들어오면 이 애노테이션을 선언해놓은 함수로 처리해라'라는 뜻이다.
위 두가지 애노테이션은 spring boot 전용 애노테이션이 아니라 spring MVC 관련 애노테이션이다.
- @EnableAutoConfiguration : 이 애노테이션은 spring boot가 사용자가 추가한 라이브러리(ex. spring-boot-starter-XXX)를 기반으로 이 애플리케이션이 어떻게 동작해야 되겠다는 것을 정한다. 예를들어 spring-boot-starter-web을 maven에서 추가했을 때 이 애노테이션이 붙어있는 spring boot는 web application을 개발하고 있다고 인식하고 이에 알맞는 auto-configuration을 수행한다.
- main method : 이 함수는 spring boot application의 entry point로 Java의 기본적인 메인함수와 똑같은 구조로 이루어져있다. 메인 클래스(여기서는 Example.class)를 SpringApplication에 전달하고 Spring Application은 자동 구성(auto configuration)된 tomcat 웹서버를 동작시키고 기본 구성 Spring 구성요소인 자기가 받은 메인 클래스와 아규먼트(args)를 전달한다.
위 코드는 spring 공식 홈페이지에서 제공하는 spring boot reference에서 첫번쨰로 나오는 spring boot 코드이다. 간략하게 main method를 포함하고있는 class며 run을 호출해서 spring application에게 Example class를 구동시켜라, 근데 이 함수는 controller도 선언되어있으니깐 안에 참고해서 home method를 "/"로 오는 요청에 대응하게 해라, 라는 구성으로 되어 있다.
'Framework & Library & Tool > Spring&SpringBoot' 카테고리의 다른 글
Spring Security - Authentication Architecture (0) | 2021.12.21 |
---|---|
Spring Security - Architecture (0) | 2021.12.21 |
Servlet, Servlet Container, Spring Container (0) | 2021.12.10 |
Spring Integration - 기본 개념 (0) | 2021.12.07 |
spring boot란 무엇인가 (0) | 2017.01.24 |
reply