spring boot 1

24
Spring-boot로 java 웹서버 만들기 1화. NEXT 2기 Dragonist nodejs, rubyonrails, 등등 생산성 좋은 것들이 많다고 spring어려워하는 사람들에게 spring도 spring-boot사용하면 보다 빠르게 웹서버 만들수 있다는걸 보여주고 싶었어요 Copyright(c)2015 github.com/dragonist All rights reserved

Upload: -

Post on 14-Apr-2017

878 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Spring Boot 1

Spring-boot로 java 웹서버 만들기

1화.

NEXT 2기 Dragonist nodejs, rubyonrails, 등등 생산성 좋은 것들이 많다고 spring어려워하는 사람들에게 spring도 spring-boot사용하면 보다 빠르게 웹서버 만들수 있다는걸 보여주고 싶었어요

Copyright(c)2015 github.com/dragonist All rights reserved

Page 2: Spring Boot 1

Spring Starter Project spring boot 를 이용하여 서버를 만들거예요

**Spring java 기반의 프로젝트를 만드는데 필요한 클래스를 묶어 놓은 프레임 워크 **Spring boot 스프링을 손쉽게 쓸수 있도록 spring에서 제공해 주는것 스프링을 그냥 생으로 쓰려면 많은 일이 필요한다 근데 그만큼 spring boot 쓰다가 spring으로 쓰려면 어렵다 springboot 가 부족하다는 느낌이 들면 그땐 쌩 spring을 쓰세요

오른쪽 마우스 클릭 or ctrl+N

Page 3: Spring Boot 1

packaging? 어플리케이션 소스들을 배포할 시에 path 등의 설정에서의 에로점을 제거하기위해 탄생한 압축방식입니다. 이 압축방식 들은 압축의 해제없이 JDK에서 각 파일들을 접근하여 사용할 수 있도록 설계되어있습니다. jar : java file 압축 war : web을 위한 압축(packaging)방식

MAVEN? 빌드 도구! (node진영에선 npm, python진영에선 pip같은 존재) 프로젝트를 관리해주는녀석 “나는 spring을 쓸래요” 라고 선언하면 spring 을 자동으로 다운 받아준다 또한 goal 에 따라서 build를 알아서 해준다 eclipse에 맞게 세팅해줘: eclipse:clean eclipse:eclipse (이걸 하면 프로젝트폴더에 숨김 폴더로 .project 등 이것저것 생긴다.) 잘모르겠으면 일단 넘기자. 써보면곧 알꺼다

나머지 설정 부분은 각자 살펴보세요 대부분 이름짓기 놀이

설마 나처럼 ‘demo’, ‘test’ 이렇게 시시하게 대충 넘어가는 사람은 없길...

Page 4: Spring Boot 1

web 클릭

Page 5: Spring Boot 1

그리곤 다른 부분은 좀 살펴보고 Finish! 버튼 클릭

Finish를 누르면 느려지면서 뭔가 프로그램이 돌아가고 있다 그게 바로 Maven ! (Maven이 자동으로 돌아가고 있어서 오래걸림)

Page 6: Spring Boot 1

전부 클릭 해서 살펴보기

메이븐 설정 파일 (pom.xml) (node 진영에 package.json): 이 파일을 기반으로 프로젝트 이름이 뭔지 자바 버전은 어떤지 스프링 버전 몇 쓰는지 등등 알수 있음!

우리가 방금전 알림창에서 설정한 것들이 고스란히 적혀있다.

이 파일은 없을 수도 있음

Eclipse가 알아서 프로젝트 구도를 잡아놨다. 프로젝트 구도 살펴보기

Page 7: Spring Boot 1

<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>org.test</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>test2</name><description>it's for you</description>

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository -->

</parent>

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><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-tomcat</artifactId><scope>provided</scope>

</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></plugins>

</build></project>

이부분 제대로 들어가 있는지 확인! version은 꼭 똑같을 필요는 없을거예요

프로젝트 빌드 할때 인코딩 방식프로젝트에서 사용하는 자바의 버전 이부분은 각자 컴퓨터가 이미 깔았던 자바 버전 에 맞게 들어간다. 만약 오픈소스를 다운받아서 남에 프로젝트를 돌리는데 버전이 내 컴퓨터에 없다면 오라클가서 jdk 를 맞게 깔아야 한다.

spring은 web용만 있는게 아니다 batch, security jpa등등 이것저것 java파일을 만드는데 필요한 보든걸 갖고 있다! 우리에게 필요한건 WEB

tomcat은 서버(WAS: web application server)이다. WAS 에는 tomcat말고도 jetty, 제우스, 등등이 있다.

spring test - 테스트 코드를 만드는데 필요한 것들이 담겨있다

Maven은 빌드도구 나중에 원격 서버에 가서 mvn package를 하면 이 큰 프로젝트가 war로 압축이 될 예정이다

Page 8: Spring Boot 1

여기서 잠깐

서버를 카페라고 생각해보자 카페를 차리려면(서버를 만드려면) 일단 카페를 차릴 계획서를 만든다 (pom.xml) 카페 창업을 시작하는데... 뭐부터 해야할지 막막하다.

일단 카페 구도및 계획서를 Eclipse라는 놈에게 부탁한다. “나 웹 프로젝트 만들꺼야 이름은 test1이고 스프링부트(커피 레시피가 담긴 책을 읽을줄 아는 직원)을 고용할꺼야”

이것만으로 Eclipse는 알아서 계획서를 만들고 Maven이라는 업체에 일을 시킨다. Maven회사는 창업하는데 필요한 직원들(Sprig-Boot-web, Spring-Boot-test, Spring-Boot-tomcat)을 고용하고, 간판도 만들어준다. eclipse가 좋아할만한 취향으로 가져다 준다.(eclipse:clean eclipse:eclipse)

Maven이 고용한 직원은 메니져 이다. 메니져는 여러 부하 직원을 데리고 있다. Spring-Boot-web은 실질적인 일(서빙, 계산, 요리 등등)을 하는 메니져이다.(mvc model-view-controller) Spring-Boot-test는 신메뉴 개발을 하고 커피가 정말 맛있는지 테스트 하는 메니져 이다. (mock, junit) Spring-Boot-tomcat은 카페를 돌아가도록 손님을 맞이하고 손님이 미끌어지지 않도록 카페를 닦고, 카페의 전구가 24시간 켜지게 한다. (was web-application-server)

이해를 돕기위해 그냥 필자가 지어낸 잡설이다.

Page 9: Spring Boot 1

pom.xml이 변경 사항이 있다면 1) pom.xml 오른쪽 클릭 2) Run As -> Maven build 선택

Goals : eclipse:clean eclipse:eclipse Run클릭

Page 10: Spring Boot 1

클릭

main 등장!! 우리가 별짓 않해도 spring boot의 SpringApplication 이 서버를 띄워줄 꺼예요

run 해보기!

Page 11: Spring Boot 1

클릭 하면 RUN!

둘중 아무거나 누르고 Ok! Java Application은 main을 실행한다. Spring Boot App 은 @SpringBootApplication를 보고 실행한다.

Page 12: Spring Boot 1

이렇게 뜨면 여기까지 잘 따라왔고 서버가 잘 떳다는 뜻이다 오류가 났다면 구글링으로 스스로 문제를 해결하는 능력을 키워보자

Page 13: Spring Boot 1

Address already in use

요 에러 많이 등장할꺼다. 서버가 이미 켜져 있는데 또 켜서 그렇다 Console탭 오른쪽 위를 보면

클릭 클릭

서버를 껐다 이제 다시켜보자 또 안된다면 아마 다른 프로그램이 해당주소를 차지하고 있을꺼다 해결방법은 알아서 해라 그정도 구글링 못하면 옆사람에게 물어라 글쓸공간이 부족해서 안알랴줌

Page 14: Spring Boot 1

우린 아직 아무것도 않했음 이제 본격적으로 들어가자

만약 여유가 된다면 읽어 보시길 좋은 플러그인이 있음: http://www.slipp.net/wiki/pages/viewpage.action?pageId=16711743

Page 15: Spring Boot 1

Ctrl + N : 새로만들기 하고 검색창에 package, class, 등등 을 치셔 enter

여기서 팁! 제발 package 만들고 class만들어야지 하지 말자 class 만들기로 하면 package는 이름을 쓰면 알아서 생성해준다.

그외 상속이나 implements도 미리 지정할수있다. 꼭 필요한건 아니지만 알아두면 편하다.

팁!

Page 16: Spring Boot 1

오른쪽 마우스->new or ctrl+N java class 만들기 package랑 이름은 적당히 잘짓기!

@RequestMapping(“/”)? 주소(localhost:8080/) 으로 갔을때 보일 내용

복붙 못하게 이미지 캡쳐 ㅋㅋ 이정도 타이핑은 해주길...

이제 진짜 만들어보자

Page 17: Spring Boot 1

만약 타이핑중에 import를 하나하나 치고 있진 않겠지요?? 저 빨간줄에 커서를 두고 Ctrl+1 눌러봐요 ㅎㅎ

주석 단축키는 Ctrl+/

@Controller 요청(request)을 받고 응답(response)을 주는 녀석 이라는 것을 선언

@RestController Controller인데 reponse가 json(javascript object notation)형태로 줄것을 선언

@RequestMapping 저런 주소의 요청이 들어오면 이메소드를 실행해달라고 선언

@ : annotation http://www.nextree.co.kr/p5864/ 여기 잘 설명돼 자료가있어요

Page 18: Spring Boot 1

run 해보자! 브라우저에서 localhost:8080로 접속!

Page 19: Spring Boot 1

오른쪽 마우스->new or ctrl+N java class 만들기 package랑 이름은 적당히 잘짓기!

Page 20: Spring Boot 1

설마 이거 다 치고 있는 사람은 없겠지... Ctrl+alt+s : Generate getter and setter

Page 21: Spring Boot 1

이부분 추가 하고 서버 껏다가 다시 켜보자!

http://localhost:8080/register?id=erin314&password=1234&name=erin&[email protected]

(User 객체가 JSON이라는 형태에 맞춰서 나오는 거예요)**JSON : javascript object notation

Page 22: Spring Boot 1

오른쪽 마우스->new or ctrl+N html 파일 만들기 html(HyperText Markup Language) 하이퍼텍스트 마크업 언어(HTML)는 웹페이지 모르면 오픈튜토리얼 https://opentutorials.org/course/11/10

Page 23: Spring Boot 1

index.html 이 보일래면 어떻게 해야 할지 궁금 한가요? 그건 다음 시간에 ㅋㅋㅋㅋㅋ 이래야 드라마틱한 개발임 ㅋㅋㅋㅋㅋㅋ

Page 24: Spring Boot 1

정리Spring java 기반의 프로젝트를 만드는데 필요한 클래스를 묶어 놓은 프레임 워크 Spring boot 스프링을 손쉽게 쓸수 있도록 spring에서 제공해 주는것 스프링을 그냥 생으로 쓰려면 많은 일이 필요한다 근데 그만큼 spring boot 쓰다가 spring으로 쓰려면 어렵다 springboot 가 부족하다는 느낌이 들거야 그땐 토비의 스프링을 보도록

Maven 프로젝트 빌드 관리 툴 (Pom.xml은 Maven 설정 파일) 이프로젝트에 spring을 쓰겠다 라고 선언하면 spring 을 자동으로 다운 받아준다 또한 goal 에 따라서 build를 알아서 해준다 eclipse에 맞게 세팅해줘: eclipse:clean eclipse:eclipse (이걸 하면 프로젝트폴더에 숨김 폴더로 .project 등 이것저것 생긴다.)

@Controller 요청(request)을 받고 응답(response)을 주는 녀석 이라는 것을 선언

@RestController Controller인데 reponse가 json(javascript object notation)형태로 줄것을 선언

html(HyperText Markup Language) 하이퍼텍스트 마크업 언어(HTML)는 웹페이지를 만들고 보여주는데 사용됩니다. 브라우저에 아무 페이지나 가서 저장해 보면 그 데이터는 대략 index.html로 들어간다. 그만큼 index라는 이름이 대중적임