Just do IT
article thumbnail
Published 2021. 6. 21. 14:24
JPA 실습하기 (6) Programing/JPA

이번 포스팅에서는 Controller에 기능을 하나씩 추가하며 실행을 해보도록 하겠습니다

 

Controller에 작성을 시작하기 전! 지금까지 작성한 코드 확인하기 위해 프로젝트 실행을 시켜보겠습니다

 

프로젝트 우클릭 -> Run As -> Spring Boot App으로 실행을 시켜주세요

에러 없이 실행이 잘 되었다면 콘솔창은 아래와 같은 모습일 것입니다

데이터베이스에도 접속하여서 테이블이 생성이 되었는지 확인해주세요

저는 DBeaver로 접속을 하여 확인하였습니다

위처럼 테이블이 정상적으로 생성이 되었다면 Controller를 작성할 준비가 완료되었습니다.

 

MemberController.java

 

com.example.practice 패키지는 처음 프로젝트를 생성할 때 생성되는 기본 패키지입니다.

com.example.practice.controller 패키지와 MemberControllerj.java 클래스를 생성해주세요.

 

모든 고객정보 조회하기

package com.example.practice.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.practice.model.Member;
import com.example.practice.service.MemberService;

@RestController
@RequestMapping("member")
public class MemberController {
	
	@Autowired
	private MemberService memberService;
	
	/**모든 고객 조회, GET, localhost:8080/member**/
	@GetMapping(produces = {MediaType.APPLICATION_JSON_VALUE} )
	public ResponseEntity<List<Member>> getAllMembers(){
		List<Member> members = memberService.findAll();
		return new ResponseEntity<List<Member>>(members, HttpStatus.OK);
	}

}

@RestController

: 스프링 프레임워크 4.x버전 이상부터 사용가능한 어노테이션

@Controller에 @ResponseBody가 결합된 어노테이션

컨트롤러 클래스 하위 메서드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON등을 전송할 수 있다

 

@RequestMapping 

: URL을 컨트롤러의 메서드와 매핑할 때 사용하는 스프링 프레임워크 어노테이션

  viewName의 URL로 성정이 된다

 

@GetMapping 

: HTTP GET 요청을 특정 핸들러 메소드에 매핑하기 위한 어노테이션

@RequestMapping(method = RequestMethod.GET, path="/URL")와 같은 형태이다

 

produces = {MediaType.APPLICATION_JSON_VALUE} 

: APPLICATION_JSON_VALUE 형태의 유형으로 응답을 한다는 것

produces, consumes는 JSON을 사용하기 위한 기능이다

 consumes= {MediaType.APPLICATION_JSON_VALUE} 

: APPLICATION_JSON_VALUE의 타입의 요청만 반아들인다는 것

 

ResponseEntity 

: Spring Framework에서 제공하는 클래스 중 HttpEntity 클래스를 상속받아 구현한 클래스 중 하나

  HttpEntity 클래스를 상속받아 구현한 클래스 - RequestEntity, ResponseEntity 

  ResponseEntity는 HttpStatus, HttpReaders, HttpBody를 포함한다

 

요청 URL은 localhost:8080/member가 될 것이며 GET 방식으로 요청을 하게 될 것 입니다

작성이 완료가 되면 Spring Boot App으로 실행을 시킨 후

인터넷 창(저는 크롬을 사용했습니다)에 localhost:8080/member로 요청을 보내보시면 아래와 같은 페이지가 보일 것 입니다

실행은 됬지만 현재 테이블에 데이터가 없기 때문에 위와 같이 보이는게 맞습니다

정말로 데이터가 제대로 출력이 되는지 보기 위해 샘플 데이터를 넣어보겟습니다

 

BootrestpracticeApplication.java

프로젝트가 생성될 때 함께 생성되었던 기본 패키지에 있는 클래스를 사용하여 샘플 데이터를 테이블에 추가해 봅시다

 

package com.example.practice;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.example.practice.model.Member;
import com.example.practice.repository.MemberRepository;

@SpringBootApplication
public class BootrestpracticeApplication implements CommandLineRunner{

	public static void main(String[] args) {
		SpringApplication.run(BootrestpracticeApplication.class, args);
	}
	
	@Autowired MemberRepository memberRepository;
	  
	@Override public void run(String... args) throws Exception {
	    memberRepository.save(new Member(1, "이순신", "soonShin", "1234"));
	    memberRepository.save(new Member(2, "강감찬", "chan", "5678"));
	    memberRepository.save(new Member(3, "이종철", "jongCheol", "2222"));
	    memberRepository.save(new Member(4, "정약용", "jongCSI", "6666"));
	    memberRepository.save(new Member(5, "허준", "june", "3333")); 
	}

}

CommandLineRunner는 스프링부트 어플리케이션이 구동될 때 시작될 코드를 설정할 때 사용할 수 있는 방법이다

참고 : https://madplay.github.io/post/run-code-on-application-startup-in-springboot

 

스프링 부트 애플리케이션이 구동될 때 코드를 실행하는 방법

스프링 부트(Spring Boot) 애플리케이션이 시작될 때 특정 코드를 실행시킬 수 있는 방법이 있을까?

madplay.github.io

샘플 데이터를 작성해주고 실행을 시켜주면 테이블에 들어간 데이터를 보실 수 있습니다

위와 같이 출력이 되지만 한 눈에 들어오지 않는 형식이라 매번 확인할 때 불편함이 있습니다

API를 테스트 하는데 좀 더 편리한 도구를 사용해서 출력을 보시면 좀 더 편리하게 보실 수 있습니다

제가 사용한 도구는 Advanced REST Client로 크롬의 확장 프로그램입니다. 크롬을 사용하신다면 구글에 검색하여 쉽고 빠르게 설치하여 사용하실 수 있습니다.

 

위의 출력 내용을 Advanced REST Client로 본다면 아래와 같은 모습으로 보실 수 있습니다

Method 에는 요청 방식을 선택해주시면 되고

Request URL 에는 요청 주소를 작성해주시고 SEND를 눌러주시면 아래에 샘플 데이터를 보실 수 있습니다

왼쪽에 History는 내가 요청했던 내용의 기록을 보실 수 있으며 클릭하면 그 요청을 다시 보실 수 있습니다

 

앞으로 테스트해볼 기능들은 모드 Advanced REST Client로 실행하여 결과를 보도록 하겠습니다

 

고객 한명의 정보 조회하기

// 한 명의 고객 정보 조회, GET, localhost:8080/member/1(고객번호 입력)

	@GetMapping(value="/{memNum}", produces = { MediaType.APPLICATION_JSON_VALUE })
	public ResponseEntity<Member> getEmp(@PathVariable("memNum") int memNum){
		return new ResponseEntity<Member>(memberService.findBymemNum(memNum), HttpStatus.OK);
	}

고객 번호를 받아서 해당 고객의 정보를 출력하는 메서드 입니다

요청은 동일하게 GET 방식으로 하며 요청 URL도 동일하되 뒤에 /(고객번호)만 추가해주시면 됩니다

어떻게 출력이 되는지 보도록 하겠습니다

해당 고객 번호에 맞는 데이터가 출력이 됨을 볼 수 있습니다

 

다음 포스팅에서는 삭제, 수정, 입력 그리고 검색을 해보도록 하겠습니다

다음으로 -> https://amy-ming.tistory.com/19

'Programing > JPA' 카테고리의 다른 글

JPA 실습하기 (7)  (0) 2021.06.21
JPA 실습하기 (5)  (0) 2021.06.16
JPA 실습하기 (4)  (0) 2021.06.15
JPA 실습하기 (3)  (0) 2021.06.14
JPA 실습하기 (2)  (0) 2021.06.14
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!