spring boot 2

Post on 14-Apr-2017

389 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Spring-boot로 java 웹서버 만들기

2화.

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

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

index.html 이 보일래면 어떻게 해야 할지 궁금 한가요? 그건 다음 시간에 ㅋㅋㅋㅋㅋ 이래야 드라마틱한 개발임 ㅋㅋㅋㅋㅋㅋ이제 index.html을 보여주는 서버를 만들어보자

이부분 지우세요

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

타이핑 하고 서버를 켜보세요

index.html 페이지 잘 나옴!

콘솔로그도 잘나옴

이제 데이터를 저장하자 DB

DB : 데이터 베이스 Orcle, MySQL, Mongo, H2 데이터를 저장하는곳

제일 간단한 H2를 써볼꺼다 H2는 로컬 디비여서 따로 사이트에들어가서 깔지않고 Maven보고 깔아오라 시키면 된다

H2 와 동시에 JPA라는 녀석을 써볼꺼다 디비가 뭔지, 어떤 쿼리를 날려야 하는지 알필요없다 그냥 객체지향적으로 데이터를 저장하는 것처럼 보이도록 것임 디비관련 된 부분은 알아서 JPA가 해줄것이다.

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope>

</dependency>

pom.xml에 추가하고 maven build

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

Goals : eclipse:clean eclipse:eclipse Run클릭

지난 화에 Maven 빌드 했던 방법

@Entity 저장할 객체 @Id Key 값

User 데이터를 디비 넣어보자

클릭

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

타이핑!

한번 테스트코드를 만들어보자

디비 완료?

Ctrl+N juni 까지만 치면 Junit Test Case가 나온다 enter 그리고 타이핑

기본적인 Junit Test 만드는법

만들어져 있는 테스트 코드 파일을 누르고 Ctrl+ C, Ctril+V 이름을 지정하고 OK (페키지가 필요한면 페키지 정도는 ctrl+N으로 만들고) 새로만든 파일을 마우스로 움직인다.

귀차니즘의 JunitTest 만드는법

테스트 코드 만들고 Run

junit Test Case 만들기 package: demo.repository class name: UserRepositoryTest

Content Assist 기능! Eclipse가 무거운 이유는 정말 편한 기능이 많이 있기 때문!!!! 인스턴스.(메소드)상태에 커서를 두고 alt+space 나 ctrl+space 눌러보면 사용가능한 메소드 가 나오고 메소드의 리턴값 어떤 용도인지 전부 나옴!

����������� ������������������   @Autowired����������� ������������������  ����������� ������������������   UserRepository����������� ������������������  repo;����������� ������������������  ����������� ������������������   ����������� ������������������  ����������� ������������������   static����������� ������������������  User����������� ������������������  user;����������� ������������������  ����������� ������������������   ����������� ������������������  ����������� ������������������   @BeforeClass����������� ������������������  ����������� ������������������   public����������� ������������������  static����������� ������������������  void����������� ������������������  setUpBeforeClass()����������� ������������������  throws����������� ������������������  Exception����������� ������������������  {����������� ������������������  ����������� ������������������   ����������� ������������������   user����������� ������������������  =����������� ������������������  new����������� ������������������  User();����������� ������������������  ����������� ������������������   ����������� ������������������   user.setId("erin314");����������� ������������������  ����������� ������������������   ����������� ������������������   user.setEmail("erin314@naver.com");����������� ������������������  ����������� ������������������   ����������� ������������������   user.setName("erin");����������� ������������������  ����������� ������������������   ����������� ������������������   user.setPassword("1234");����������� ������������������  ����������� ������������������   }����������� ������������������  ����������� ������������������   ����������� ������������������  ����������� ������������������   @After����������� ������������������  ����������� ������������������   public����������� ������������������  void����������� ������������������  tearDown()����������� ������������������  throws����������� ������������������  Exception����������� ������������������  {����������� ������������������  ����������� ������������������   ����������� ������������������   repo.deleteAll();����������� ������������������  ����������� ������������������   }����������� ������������������  ����������� ������������������   ����������� ������������������  ����������� ������������������   @Test����������� ������������������  ����������� ������������������   public����������� ������������������  void����������� ������������������  save()����������� ������������������  {����������� ������������������  ����������� ������������������   ����������� ������������������   User����������� ������������������  result����������� ������������������  =����������� ������������������  repo.save(user);����������� ������������������  ����������� ������������������   ����������� ������������������   ����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getId(),����������� ������������������  user.getId());����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getEmail(),����������� ������������������  user.getEmail());����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getName(),����������� ������������������  user.getName());����������� ������������������  ����������� ������������������   }����������� ������������������  ����������� ������������������   ����������� ������������������  ����������� ������������������   @Test����������� ������������������  ����������� ������������������   public����������� ������������������  void����������� ������������������  find()����������� ������������������  throws����������� ������������������  Exception����������� ������������������  {����������� ������������������  ����������� ������������������   ����������� ������������������   repo.save(user);����������� ������������������  ����������� ������������������   ����������� ������������������   User����������� ������������������  result����������� ������������������  =����������� ������������������  repo.findOne(user.getId());����������� ������������������  ����������� ������������������   ����������� ������������������   ����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getId(),����������� ������������������  user.getId());����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getEmail(),����������� ������������������  user.getEmail());����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getName(),����������� ������������������  user.getName());����������� ������������������  ����������� ������������������   }����������� ������������������  ����������� ������������������   @Test����������� ������������������  ����������� ������������������   public����������� ������������������  void����������� ������������������  update()����������� ������������������  throws����������� ������������������  Exception����������� ������������������  {����������� ������������������  ����������� ������������������   ����������� ������������������   User����������� ������������������  temp����������� ������������������  =����������� ������������������  repo.save(user);����������� ������������������  ����������� ������������������   ����������� ������������������   temp.setName("dragonist");����������� ������������������  ����������� ������������������   ����������� ������������������   User����������� ������������������  result����������� ������������������  =����������� ������������������  repo.save(temp);����������� ������������������  ����������� ������������������   ����������� ������������������   ����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getId(),����������� ������������������  temp.getId());����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getEmail(),����������� ������������������  temp.getEmail());����������� ������������������  ����������� ������������������   ����������� ������������������   assertEquals(result.getName(),����������� ������������������  temp.getName());����������� ������������������  ����������� ������������������   }����������� ������������������  

����������� ������������������   @Test����������� ������������������  ����������� ������������������   public����������� ������������������  void����������� ������������������  delete()����������� ������������������  throws����������� ������������������  Exception{����������� ������������������  ����������� ������������������   ����������� ������������������   User����������� ������������������  temp����������� ������������������  =����������� ������������������  repo.save(user);����������� ������������������  ����������� ������������������   ����������� ������������������   repo.delete(temp);����������� ������������������  ����������� ������������������   ����������� ������������������   User����������� ������������������  result����������� ������������������  =����������� ������������������  repo.findOne(user.getId());����������� ������������������  ����������� ������������������   ����������� ������������������   ����������� ������������������  ����������� ������������������   ����������� ������������������   assertNull(result);����������� ������������������  ����������� ������������������   }

** Junit Test @Test : 테스트가 잘 돌아가면 초록불이 뜬다 메소드는 순서대로 실행되지 않는다. 맨밑에 test 메소드 부터 돌아갈 수도 있다

@BeforeClass 테스트묶음 가 돌기 전에 한번 실행된다. @Before 각 테스트가 돌기 전에 매번 실행된다. @AfterClass @After 나머진 알아서

** CRUD로 보는 Repository Test JPA는 자바 콜랙션(Collection)의 Map 처럼 디비가 다뤄지길 바랬다. 그래서 다음과 같은 코드로 CRUD 테스트가 만들어진다

C: create 추가 R: read 읽기 U: update 수정 D: delete 삭제

여기서 잠깐

repo.save(user)

Entity Manager

DB (H2)

저장 해줘 저장 해줘

repo.find(id)

user

repo.find(id)

user 인스턴스 하나

오! 이 user 인스턴스가 만들어진게 있어!

1찾아줘

2리턴

4리턴3찾아줘

user.setName(“hi”) repo.save(user)

저장 해줘

내가 갖고 있는 user가 변경되었군 데이터만 변경해주면 되겠네

변경 해줘

JPA가 뭐하는 놈인지 감이오나요? Japa Persistent API: (persistent_고집,지속) Entity(user)를 POJO(Plain Old Java Object) 라고 부른다. JPA안에는 EntityManager라는 녀석이 POJO를 관리한다.

JPA

요청에 대한 응답 처리 Controller

HelloController

MainController

DB역활 Repository

UserRepository DB요청

User

Model 주고받는 객체

View 응답

JSP

HTML

끝: 1화, 2화 복습하기!

top related