스프링 부트 기초 - 1

2 minute read

2022-10-24 스프링 부트

Maven vs Gradle

빌드 관리 도구

  • 프로젝트에 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 도구
  • 소스 코드를 컴파일, 테스트, 정적분석 등을 하여 실행가능한 앱으로 빌드해줌
  • 프로젝트 정보 관리, 테스트 빌드, 배포 등의 작업을 진행해줌
  • 외부 라이버리를 참조하여 자동으로 다운로드 및 업데이트의 관리해줌

자바의 대표적인 빌드 도구 : Ant, Maven, Gradle

Maven

  • 자바의 대표적인 관리 도구였던 Ant를 대체하기 위해 개발됨
  • 프로젝트의 외부 라이브러리를 쉽게 참조할 수 있게 pom.xml 파일로 명시하여 관리
  • 참조한 외부 라이브러리에 연관된 다른 라이브러리도 자동으로 관리됨

메이븐(Maven)을 사용하는 이유

  • 기존에 사용하던 Ant는 빌드의 기능만 가지고 있음

  • 자동으로 라이브러리를 관리해주는 기능이 추가된 Maven을 사용

  • 다운받아 사용하던 라이브러리에 변동 사항이 있으면 자동으로 업데이트 하여 적용됨

Gradle

  • Groovy 스크립트를 활용한 빌드 관리 도구
  • 안드로이드 프로젝트의 표준 빌드 시스템으로 채택
  • 멀티 프로젝트(Multi-Project)의 빌드에 최적화 하여 설계됨
  • Maven에 비해 더 빠른 처리속도를 가지고 있음
  • Maven에 비해 더 간결한 구성이 가능함

그래들(Gradle)과 메이븐(Maven)비교

  • Gradle에 비해 Maven이 점유율이 더 높은 상황
  • Gradle에 비해 Maven의 성능이 떨어짐
  • Maven에 비해 Gradle이 대규모 프로젝트에서의 선응이 좋음
  • Maven : pom.xml Gradle : bulild.gradle
  • Gradle은 설치 없이 사용 가능

Annotation

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

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

View를 거치지 않고 HTTP ResponseBody에 직접 Return 값을 담아 보내게 됨

@Controller와 @RestController 차이점

2.png

1.png

  • RestController 사용시 return 값 그 자체가 반환된다
  • Controller 사용시 return에 적혀있는 값의 jsp를 찾는다.

@RequestMapping

value와 method로 정의하여 API 개발하는 방식

이제는 고전적인 방법으로 사용하지 않음

@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
    return "hello world";
}

GetAPI

@GetMapping

별도의 파라미터 없이 GET API를 호출하는 경우 사용되는 방법

@GetMapping(value = "/hello")
public String hello() {
    return "hello world";
}

@PathVariable

GET 형식의 요청에서 파라미터를 전달하기 위해 URL에 값을 담아 요청하는 방법

아래 방식은 @GetMapping에서 사용된 {변수}의 이름과 메소드의 매개변구와 일치시켜야 함

@GetMapping(value = "/variable1/{variable}")
public String getVariable1(@PathVariable String variable) {
    return "variable";
}
  • GetMapping의 {varible}과 @PathVariable String variable의 variable은 같다

@PathVariable

GET 형식의 요청에서 파라미터를 전달하기 위해 URL에 값을 담아 요청하는 방법

아래 방식은 @GetMapping에서 사용된 {변수}의 이름과 메소드의 매개변수가 다를 경우 사용하는 방식

변수의 관리의 용이를 위해 사용되는 방식

@GetMapping(value = "/variable2/{variable}")
public String getVariable2(@PathVariable("variable") String var) {
    return "var";
}

@RequestParam

GET 형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법

“?”를 기준으로 우측에 {키} = {값}의 형태로 전달되며, 복수 형태로 전달할 경우 & 를 사용함

@GetMapping(value="/request1")
public String getRequestParam1 (
  @RequestParam String name,
  @RequestParam String email,
  @RequestParam String organization) {
   return name + " " + email + " " + organization;
 }

Post API

리소르를 추가하기 위해 사용되는 API

@PostMapping : POST API를 제작하기 위해 사용되는 어노테이션(Annotation) @RequestMapping + Post Method의 조합

일반적으로 추가하고자 하는 Resource를 http body에 추가하여 서버에 요청

그렇기 때문에 @RequestBody를 이용하여 body에 담겨있는 값을 받아야함

  • PostMapping 사용시 데이터 값을 받으려면 @RequestBody 필요
  • GetMapping 같은 경우 @PathVariable, @RequestParam 사용

(기본)

@PostMapping(value = "/default")
  public String postMethod() {
      return "Hello World!";
}

(DTO 사용)

key와 value가 정해져있지만, 받아야할 파라미터가 많을 경우 DTO 객체를 사용한 방식

@PostMapping(value = "/member2")
  public String postMemberDto(@RequestBody MemberDTO memberDTO) {
     return memberDTO.toString();
}

📑 출처

Categories:

Updated:

Leave a comment