본문 바로가기

Spring

(65)
1. IoC, DI/ DI 관련 코드 실습 IoC란? Inversion of Control 스프링에서는 일반적인 Java 객체를 new로 생성하여 개발자가 관리 하는 것이 아닌 Spring Container에 모두 맡긴다. 즉 개발자에서 프레임워크로 제어의 객체 관리의 권한이 넘어 갔음으로 "제어의 역전" 이라고 합니다. DI란? Dipendency Injection 객체를 사용하기 위해 주입을 받는다라는 사전적인 의미. 외부로부터 사용할 객체를 주입 받는다. = DI 주입의 주체는 Spring Container 장점 1. 의존성으로 부터 격리시켜 코드 테스트에 용이하다. 2. DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여, 안정적으로 테스트 가능하다. 3. 코드를 확장하거나 변경 할 때 영향을 최소화 한다.(추상화) 4. 순환 ..
8. Object Mapper Object mapper는 Text Json을 Object로 바꿔주고 Object를 Json으로 바꿔준다. 컨트롤러에서 Json 요청이 들어오면 object로 바꿔주고 response object를 Json(text)로 변환해왔다. 이 것을 직접 객체로 생성해서 활용할 수 있는 방법을 알아보았다. package com.example.objectmapper; public class User { private String name; private int age; public User(String name, int age){ this.name = name; this.age = age; } @Override public String toString() { return "User{" + "name='" + nam..
7. Response Response를 내리는 다양한 방법. import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") public class ApiController { @GetMapping("/text") public String text(@RequestParam String ..
6. 리소스 삭제 DELETE DELETE package com.example.delete.controller; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api") public class DeleteApiController { @DeleteMapping("/delete/{userid}") public void delete(@PathVariable String userid, @RequestParam String account){ System.out.println(userid); System.out.println(account); } } Delete는 get과 동작이 비슷하다. 데이터가 있던 없든 요청이 정확하다면 200ok를 돌..
5. PUT API PUT 은 첫 한번 데이터가 생성되고 그 다음에는 계속 데이터가 업데이트 되기 때문에 데이터는 항상 하나이므로 멱등하다고 할 수 있다. 잘못된 데이터도 전송하기 때문에 안정성은 낮고 Query Parameter는 따로 설계하지 않는 것이 권장된다. import com.example.put.dto.PostRequestDto; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bin..
4. POST API WEB에서는 json이나 xml 형태로 주고 받는다. 최근에는 json을 많이 쓴다. JSon 데이터 종류 String : value number : value boolean : value { } object : value array : value [ ] phone_number => 이런식으로 단어를 연결 할 때 _ 붙이는 것을 스네이크 케이스 phoneNumber => 이런식으로 단어를 하는 것은 카멜 케이스(낙타봉 형태) Post일때 @RequestBody를 꼭 붙여주자 @RestController @RequestMapping("/api") public class PostApiController { @PostMapping("/post") public void post(@RequestBody Map r..
3. GET API GET은 리소스를 취득하는 API이며 쿼리 파라미터를 가질 수 있다. @GetMapping에 default로 값을 입력하면 path로 등장한다. 명시적으로 등록하려면 (path = " 값 " 을 넣으면 된다. @RequestMapping("/hi") // get / post / put / delete public String hi(){ 이런식으로 지정하면 모든 메서드에 동작이 되므로 명시적으로 지정해줘야 한다. @RequestMapping(path = "/hi", method = RequestMethod.GET) // get http://localhost:9090/api/get/hi @RequestMapping을 이와같이 사용하는 것은 예전에 활용하던 주소 매핑 방식. 이 방식을 합친 것이 @GetMap..
2. Hello World API 만들기 무료이고 UI 자체도 나쁘지 않다고 추천 받았기에 Talend API Tester를 사용하게 되었다. 톰캣의 사용 port를 바꾸고 싶다면 resources 폴더 안에 aplication.properties에 server.port= [바꾸고 싶은 번호]를 입력하면 된다. 스프링부트에서 요청을 받는 부분을 컨트롤러라고 부른다. 컨트롤러라고 동작하기 위해서는 어노테이션으로 지정해줘야 한다 @RestController package com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import..