Spring 컨테이너(메모리)에 bean을 등록·생성
☆★싱글톤 역할을 대체☆★
기존 Controller에 @ResponseBody를 내장하고 있음
@Controller
// [1]
// @Controller 어노테이션의 경우, ResponseBody 어노테이션을 내장하고 있지 않음
// 필요에 따라 REST 관련 메소드 상단에 @ResponseBody 선언해야함.
public class controller1 {}
@RestController
// [2]
// @RestController 어노테이션은 ResponseBody 어노테이션을 내장하고 있으므로
// 메소드 별로 @ResponseBody를 선언해야 하는 번거로움이 적음
public class controller2 {}
: Java가 사용하는 타입을 HTTP 언어인 JSON 타입으로 자동 변환·반환하는 어노테이션
: Java에서 Method 실행 후 결과를 JSON으로 반환한다면, 해당 함수 위에 어노테이션 표기
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class controller1 {
@ResponseBody
public void method1() { }
}
| No | Annotation | HTTP method | CRUD |
|---|---|---|---|
| (1) | @PostMapping | POST | Create |
| (2) | @GetMapping | GET | Read |
| (3) | @PutMapping | PUT | Put |
| (4) | @DeleteMapping | DELETE | Delete |
URL 주소 정의하며 베이스 주소인 [http://localhost:8080] 뒤로 유도할 URL을 Mapping 뒤에 기재
한 URL 내에서 CRUD가 중복될 수 없음
class 위에 선언하며, 해당 클라스의 Mapping 어노테이션 메소드들의 공통 URL을 정의
만약 아래의 @RequestMapping에서 URL이 정의되어 있다면,
URL은 "/RequestMappingURL/@____MappingURL"으로 연결됨
@RestController
public class RestController1 {
// [1]
@GetMapping("/day03")
// HTTP를 지원하며, Http Get Method 실행시 연결됨을 주석
// URL : http://localhost:8080/day03
// Http 요청 > Java method 실행 및 결과 반환 > 결과를 JSON 타입으로 변환
// Class에 @RestController를 선언하였으므로, @ResponseBody 생략 가능!!
public String method1(){
System.out.println("method1 실행");
return "Hello world!";
}// func end
// [2]
@GetMapping("/day03")
public boolean method2( @RequestParam(name = "name", defaultValue = "홍길동", required = false) String name ){
// QueryString을 이용한 매개변수 전달
// http://localhost:8080//day03/param1?name=""
// 실행시 name이 콘솔로 들어오는 것을 알 수 있음
return true;
} //func end
// [3]
@GetMapping("/day03/param2")
public int method3( String name, int age ) {
System.out.println("RestController1.method3");
System.out.println("name = " + name + ", age = " + age);
return 3;
}
// [4]
@DeleteMapping("/day03/param3")
public String method4( @RequestParam Map<String, String> map){
// Map
// key와 value를 한 entry로 하며, 여러 entry를 저장하는 구조
//☆★☆★일반적으로 정해진 규칙이 아닌, 비규칙 구조인 Map을 사용할 경우, @RequestParam 필수!!
return "안녕";
} //func end
}
웹의 자원을 관리하는 아키텍처