스프링 부트 기초 - 1
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 차이점
- 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();
}
Leave a comment