Spring은 REST SERVICE를 제공한다 RESTful JSON service
& RESTful XML service
을 사용하는 Spring 4 @RestController
annotation 기반으로 만들 것이다.
JSON을 사용하기 위해서, Jackson library
[jackson-databind.jar
Xml을 사용하기 위해서 Jackson XML extension
[jackson-dataformat-xml.jar].를 사용할 것이다.
주의: 만약 브라우저에서 url 타입의 요청을 보낸다면, 제공하려는 내용의 타입을 스프링이 정의할 수 있도록 suffix [.xml/.json]를 추가해야 할 것이다.
Following technologies being used:
- Spring 4.3.0.RELEASE
- jackson-databind 2.7.5
- jackson-dataformat-xml 2.7.5
- Maven 3
- JDK 1.7
- Tomcat 8.0.21
- Eclipse MARS.1
Step 1: Create the directory structure
Step 2: Update pom.xml with required dependencies 여기에서 주목해야할 주된 dependencies는 Jackson library
(jackson-databind이다Jackson library
(jackson-databind는 JSON string의 reponse data를 전환하기 위해서 사용되며,Jackson XML Extension library
(jackson-dataformat-xml)은 XML을 제공하기 위함이다.Jackson XML Extension library
(jackson-dataformat-xml)이 포함되지 않으면, 오직 JSON 반응만 제공될 것이다(domain 객체가 JAXB annotations.와 함께 할당되지 않는다면)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.websystique.springmvc</groupId> <artifactId>Spring4MVCHelloWorldRestServiceDemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>Spring4MVCHelloWorldRestServiceDemo</name> <url>http://maven.apache.org</url> <properties> <springframework.version>4.3.0.RELEASE</springframework.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jackson.library>2.7.5</jackson.library> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.library}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>${jackson.library}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <warSourceDirectory>src/main/webapp</warSourceDirectory> <warName>Spring4MVCHelloWorldRestServiceDemo</warName> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </pluginManagement> <finalName>Spring4MVCHelloWorldRestServiceDemo</finalName> </build> </project>
Step 3: Add a Pojo/domain object
package com.websystique.springmvc.domain; public class Message { String name; String text; public Message(String name, String text) { this.name = name; this.text = text; } public String getName() { return name; } public String getText() { return text; } }
위의 객체는 컨트롤러부터 리턴받으며, jcakson에 의해서 Jason format으로 전환될 것이다.
만약 jackson-dataformat-xml이 존재한다면, XML로도 전환될 수 있다.
Step 4: Add a Controller 여기서 주목해야할 저 흥미로운 것은 여기서 이것은 이 클래스가 view 대신에 도메인 객체를 리턴한다는 것을 표시한다. 그것은 더 이상 view-resolveres를 사용하지 않는다는 것을 의미하며, 더 이상 html을 직접적으로 보내지 않고,이용자가 이해할 수 있는 format으로 전환된 도메인 객체를 보낸다는 것이다. Class path 안에 Jackson library가 포함되어져 있기 때문에, the Message object는 @PathVariable
은 이 파라메터가 URI template 안에 있는 변수에 연결된다는 것을 가리킨다.@RestController
annotation을 사용한 것이다.JSON format
[ or in XML으로 전환될 것이다.
package com.websystique.springmvc.controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.websystique.springmvc.domain.Message; @RestController public class HelloWorldRestController { @RequestMapping("/") public String welcome(){ return "Welcome to RestTemplate Example."; } @RequestMapping("/hello/{player}") public Message message(@PathVariable String player){ Message msg = new Message(player, "Hello " + player); return msg; } }
Step 5: Add Configuration Class
package com.websystique.springmvc.configuration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @Configuration @EnableWebMvc @ComponentScan(basePackages = "com.websystique.springmvc") public class HelloWorldConfiguration { }
여기서 이 클래스는 오직 component-scanning and annotation support만 제공하는데, 어떤 view_resolvers도 사용하지 않기 때문이라는 것을 알아차려야 한다.
Step 6: Add Initialization class
초기화 class를 추가(web.xml에 정의하는 spring configuration을 대체)
package com.websystique.springmvc.configuration; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class HelloWorldInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class>[] getRootConfigClasses() { return new Class[]{HelloWorldConfiguration.class}; } @Override protected Class>[] getServletConfigClasses() { return null; } @Override protected String[] getServletMappings() { return new String[]{"/"}; } }
Step 7: Build and Deploy the application
jackson-dataformat-xml.jar를 포함했기 때문에, 얻을 수 있는 반응은 XML이다.
만약 SPRING이 JSON response로 반응하길 원한다면,
-jackson-dataformat-xml.jar(pom.xml에 있는) 제거하거나 Suiifx the URL에 .json을 붙여라
원문:http://websystique.com/springmvc/spring-4-mvc-rest-service-example-using-restcontroller/
'SPRING' 카테고리의 다른 글
Spring Batch- Read an XML file and write to a CSV file (0) | 2017.11.23 |
---|---|
Spring Batch- Read a CSV file and write to an XML file (0) | 2017.11.21 |
Spring4 MVC-Annotation/JavaConfig Example (0) | 2017.11.18 |
Spring4 MVC(기초 복습) (0) | 2017.11.16 |
하이버네이트 + Mysql(anotaion) 기초 잡기 (0) | 2017.11.15 |