https://spring.io/guides/gs/rest-service/ 

 

Getting Started | Building a RESTful Web Service

In Spring’s approach to building RESTful web services, HTTP requests are handled by a controller. These components are identified by the @RestController annotation, and the GreetingController shown in the following listing (from src/main/java/com/example

spring.io

 

스프링 부트에서는 알아서 Jackson JSON 라이브러리를 사용해서 클래스를 JSON으로 바꿔준다. Jackson은 web starter에 기본적으로 포함되어 있다. 

 

RESTful 웹 서비스를 만드는데 스프링의 접근법에서, HTTP 요청은 컨트롤러에 의해 다뤄진다. @RestController 애노테이션을 사용한다. 

Run the Service

@GetMapping 애노테이션은 HTTP GET 요청이 설정한 문자열로 매핑되어 매핑된 문자열에 해당되는 메소드를 실행시킨다. 

@PostMapping 애노테이션 은 HTTP POST요청.

(@RequestMApping(method=GET), @RequestMApping(method=POST) 와 같은 의미)

	@GetMapping("/greeting")
	public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
		return new Greeting(counter.incrementAndGet(), String.format(template, name));
	}

@RequestParam 은 쿼리스트링 파라미터 name을 greeting() 메소드에 name 파라미터로 바인딩 시켜준다. 만약 name 파라미터가 부재한다면 defaultValue로 설정한 World 가 사용된다.

 

전통적인 MVC 컨트롤러와 RESTful 웹 서비스 컨트롤러의 핵심 차이는 HTTP response body가 생성되는 방식이다. 데이터를 HTML로 서버사이드 렌더링을 수행하는 view technology에 의지하는 대신, RESTful 웹 서비스는 데이터 객체자체를 리턴한다. 객체데이터가 HTTP response에 JSON의 형식으로 직접적으로 쓰여진다. 

 

@RestController 애노테이션은 해당 클래스의 모든 메소드는 view가 아닌 객체를 리턴하는 컨트롤러로 동작하도록 한다. @Controller와 @ResponseBody 두 애노테이션을 포함하는 약칭이다. 

 

객체를 JSON으로 바꿀 때는 사용자가 직접할 필요 없이 클래스패스에 Jackson2가 있어서 스프링의 MappingJackson2HttpMessageConverter가 자동으로 JSON으로 변환해준다. 

 

@SpringBootApplication 애노네이션은 다음을 포함한다.

- @Configuration : 해당 클래스를 application context를 위한 bean 정의의 source로서 태그를 지정한다.

- @EnableAutoConfiguration : 스프링 부트에게 클래스패스의 설정과 다른 bean, 그리고 다양한 property 설정을 추가하는 것을 시작하라고 한다. 예를 들어, spring-webmvc가 클래스패스에 있으면 애플리케이션을 웹 애플리케이션이라고 표시하고 DispatcherServlet과 같은 주요 동작을 설정한다.

- @ComponentScan : 다른 컴포넌트나, 설정, com/example 패키지에 있는 서비스를 찾게 한다. 

 

main() 메소드는 스프링 부트의 SpringApplication.run() 메소드를 사용해서 애플리케이션을 시작한다. 

 

★ web.xml 파일도 없고, 웹 앱을 100% 순수 자바로 설정할 수 있다. 

 

그래들이나 메이븐을 커맨드라인으로 애플리케이션을 실행시킬 수 있고, 또, 모든 디펜던시, 클래스, 리소스 등을 포함하는 단일 실행가능한 JAR파일을 빌드할 수도 있다.실행가능한 jar를 빌딩하는 것은 다른 환경에 따른 개발 라이프싸이클 동안 애플리케이션을 배포하는 것, 옮기는 것, 버전관리하는 것을 쉽게 한다. 

 

Gradle 을 사용하는 경우

1) ./gradlew bootRun으로 애플리케이션을 실행할 수 있다.

2) ./gradlew build 로 빌드하고 JAR파일을 java -jar build/libs/gs-rest-service-0.1.0.jar 로실행할 수 있다.

 

 

Maven 을 사용하는 경우

1) ./mvnw spring-boot:run 으로 애플리케이션을 실행할 수 있다. 

2) ./mvnw clean package 로 빌드하고 java -jar target/js-rest-service-0.1.0.jar 로 실행할 수 있다.

'정보 > Framework' 카테고리의 다른 글

[Java] Interface Filter 필터  (0) 2023.08.04

+ Recent posts