티스토리 뷰
스프링 부트를 이용한 api서버를 만들겠습니다.
서버에 요청하면 json형식으로 결과를 내려주는 서버를 만들게 됩니다.
프로젝트 생성
메이븐 프로젝트를 생성해 줍니다.
new-project-Maven Project해서 생성하시던지
그냥 프로젝트 생성 후 confiture-convert to maven project를 해줍니다.
아래와 동일한 프로젝트 구조가 생성이 됩니다.
2016/09/07 - [개발/JAVA] - 스프링 부트(Spring boot)로 개발하기
라이브러리 추가
pom.xml
스프링 부트 parent와 starter-web을 달아줍니다.
배치때 사용한 것은 그냥 starter입니다. 뒤에 web을 붙여줍니다.
Application.java
package net.donnert.spring.boot.web; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
그냥 스타트.
Article.java
package net.donnert.spring.boot.web; public class Article { private long seq; private String title; private String text; private String writer; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getWriter() { return writer; } public void setWriter(String writer) { this.writer = writer; } public long getSeq() { return seq; } public void setSeq(long seq) { this.seq = seq; } }
클라이언트로 전달 될 클래스입니다.
ArticleController.java
package net.donnert.spring.boot.web; import java.util.ArrayList; import java.util.List; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class ArticleController { @RequestMapping(value = "list", method = RequestMethod.GET) public Listtest() { List list = new ArrayList (); for(int i=1; i<=10; i++) { Article article = new Article(); article.setSeq(i); article.setText("This is text"); article.setTitle("This is title"); article.setWriter("I am writer"); list.add(article); } return list; } @RequestMapping(value = "article/{seq}", method = RequestMethod.GET) public Article detail(@PathVariable("seq") long seq) { Article article = new Article(); article.setSeq(seq); article.setText("This is text"); article.setTitle("This is title"); article.setWriter("I am writer"); return article; } }
@RestController 어노테이션을 통해 컨트롤러를 restful로 정의해줍니다.
이렇게 될 경우 @ResponseBody가 필요 없어집니다.
목록과 상세 2개의 url이 매핑되어있습니다.
테스트
Application.java를 실행하면 자체 서버가 뜹니다.
2016-10-07 15:20:52.554 INFO 4148 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/list],methods=[GET]}" onto public java.util.Listnet.donnert.spring.boot.web.ArticleController.test() 2016-10-07 15:20:52.556 INFO 4148 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/article/{seq}],methods=[GET]}" onto public net.donnert.spring.boot.web.Article net.donnert.spring.boot.web.ArticleController.detail(long) 2016-10-07 15:20:52.561 INFO 4148 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity > org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2016-10-07 15:20:52.562 INFO 4148 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2016-10-07 15:20:52.611 INFO 4148 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2016-10-07 15:20:52.611 INFO 4148 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2016-10-07 15:20:52.758 INFO 4148 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2016-10-07 15:20:53.325 INFO 4148 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2016-10-07 15:20:53.686 INFO 4148 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
스프링 부트 스타터 웹에는 톰캣이 내장되어있습니다.
내장 톰캣이 8080으로 뜨는걸 볼 수 있습니다.
브라우저를 열고 url을 입력합니다.(http://localhost:8080/list)
[{"seq":1,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":2,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":3,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":4,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":5,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":6,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":7,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":8,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":9,"title":"This is title","text":"This is text","writer":"I am writer"},{"seq":10,"title":"This is title","text":"This is text","writer":"I am writer"}]
article 10개가 json형식으로 변환되어서 출력되는 것이 보입니다.
브라우저를 열고 url을 입력합니다.(http://localhost:8080/article/3)
{"seq":3,"title":"This is title","text":"This is text","writer":"I am writer"}
3번 article 역시 json으로 보여지고 있습니다. @PathVariable를 통해 url의 파라메터를 가져왔습니다.
간단하게 api서버가 완성(?)되었습니다.
logback, mybatis연결 등은 배치 예제에서와 동일한 방법으로 하시면 됩니다.
yml을 이용한 프로파일 적용 역시 동일합니다.
2016/09/23 - [개발/JAVA] - 스프링 부트(Spring boot)에서 mybatis(oracle) 적용하기
'개발 > Java, Kotlin' 카테고리의 다른 글
이클립스 플러그인(vrapper) 설정파일(vrapperrc) (0) | 2017.01.26 |
---|---|
스프링 부트(spring boot)로 톰캣에서 실행하기(이클립스) (0) | 2016.11.03 |
스프링 부트(Spring boot)에서 mybatis(oracle) 적용하기 (2) | 2016.09.23 |
스프링 부트(Spring boot)에서 logback 적용하기 (5) | 2016.09.19 |
스프링 부트(Spring boot)에서 profile, yml 사용하기 (0) | 2016.09.13 |
- Total
- Today
- Yesterday
- oracle
- maven
- Build
- mybatis
- Linux
- vrapper
- Kotlin
- vi
- Database
- 맛집
- resttemplate
- Profile
- grant
- ls
- 합정
- jQuery
- 도커
- boot
- IntelliJ
- Eclipse
- properties
- Spring
- 코틀린
- java
- 톰캣
- docker
- Tomcat
- Shell
- vim
- Access
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |