Backend/Spring

[Spring Boot] Rest Web Service 구축 - 배포하기

romeoh 2019. 7. 17. 04:58
반응형

Spring Boot / Oracle / Mybatis 차례

 

pom.xml을 열어서 Dependency Hierarchy에서 jackson-databind 모듈을 확인합니다.

json으로 출력해주는 라이브러리 입니다.

 

Model 추가하기

src/main/java 에서 New > Package를 선택합니다.

 

model을 추가합니다.

 

추가된 model에서 New > class를 선택합니다.

Person 클래스를 추가합니다.

 

package model;

public class Person {
	String id;
	String firstName;
	String lastName;
	int age;
}

Person.java 파일에 코드를 추가합니다.

 

Person 클래스에서 마우스 오른쪽 클릭 > Source > Generate Getters and Setters를 선택합니다.

Select All 하고 Generate

Getters와 Setters가 추가되었습니다.

 

Service 추가하기

src/main/java 에서 New > Package를 선택합니다.

service를 추가합니다. ㅋ

    

service에서 class를 추가합니다.

PersonService를 추가합니다.

PersonService.java에 코드를 추가합니다.

package service;

import java.util.Hashtable;
import org.springframework.stereotype.Service;
import model.Person;

@Service
public class PersonService {
	Hashtable<String, Person> persons = new Hashtable<String, Person>();
	
	public PersonService() {
		Person p = new Person();
		p.setId("1");
		p.setAge(21);
		p.setFirstName("romeoh");
		p.setLastName("Smith");
		persons.put("1", p);
		
		p = new Person();
		p.setId("2");
		p.setAge(17);
		p.setFirstName("pororo");
		p.setLastName("kim");
		persons.put("2", p);
	}
	
	public Person getPerson(String id) {
		if (persons.containsKey(id)) {
			return persons.get(id);
		}
		return null;
	}
	
	public Hashtable<String, Person> getAll() {
		return persons;
	}
}

 

Controller 추가하기

Package를 추가합니다.

 

controller를 입력합니다.

class를 추가합니다.

PersonController를 추가합니다.

PersonController.java에 코딩합니다.

package controller;

import java.util.Hashtable;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import service.PersonService;
import model.Person;

@CrossOrigin
@RestController
@RequestMapping("/persons")
public class PersonController {
	
	@Autowired
	PersonService personService;
	
	@RequestMapping("/all")
	public Hashtable<String, Person> getAll() {
		return personService.getAll();
	}
	
	@RequestMapping("{id}")
	public Person getPerson(@PathVariable("id") String id) {
		return personService.getPerson(id);
	}
}

 

FirstProjectApplication.java 수정

앞 포스트에서 Hello World를 찍었던 FirstProjectApplication.java 파일을 수정합니다.

package com.gaeyou.firstproject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableAutoConfiguration
@ComponentScan({"controller", "service"})
public class FirstProjectApplication {

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

}

 

Tomcat 서버구동

localhost:8080/persons/all 

 

localhost:8080/persons/1

 

json이 출력되는 것을 확인 할 수 있습니다.

 

 

xml로 출력하기

model/Person.java 클래스에 @XmlRootElement annotation을 추가하고

서버를 재구동합니다.

view-source:http://localhost:8088/persons/2

소스보기를 하면 xml로 출력되는것을 알 수 있습니다.

 

 

배포하기

pom.xml을 열어서 OverView > Packaging을 jar에서 war로 변경합니다.

 

Run As > Maven build...를 선택합니다.

Goals에 package를 입력하고 Run 버튼을 누릅니다.

war 파일이 생성되었습니다.

 

Maven build 중에 maven-surefire-plugin 관련 오류가 발생하면 

pom.xml에 maven-surefire-plugin plugin을 추가합니다.

아래는 pom.xml 최종입니다.

<?xml version="1.0" encoding="UTF-8"?>
<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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.gaeyou</groupId>
	<artifactId>firstProject</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>firstProject</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<plugin>
			    <groupId>org.apache.maven.plugins</groupId>
			    <artifactId>maven-surefire-plugin</artifactId>
			    <version>2.19.1</version>
			    <configuration>
			        <testFailureIgnore>true</testFailureIgnore>
			    </configuration>
			</plugin>
		</plugins>
		
	</build>

	<packaging>war</packaging>
</project>

Spring Boot / Oracle / Mybatis 차례

반응형