스프링 프레임워크는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크이고 스프링이라고도 불린다.
스프링부트는 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 이용할 수 있도록 돕는다. 스프링 부트 starter dependency만 추가해주면 바로 api를 정의하고 내장된 tomcat이나 jetty로 웹 애플리케이션 서버를 실행할 수 있다. 실행환경이나 의존성 관리 등 인프라는 신경쓰지 않고 바로 코딩할 수 있다.
1) Auto Configuration: 프로젝트에서 필요한 bean들을 자동으로 등록하고 설정할 수 있게 해준다.
-@SpringBootConfiguration: 스프링부트 설정을 나타내는 어노테이션
-@EnableAutoConfiguration: 자동설정의 핵심 어노테이션으로 클래스 경로에 지정된 내용을 기반으로(@Controller, @Service, @Repository 등..) 설정 자동화를 수행한다.
-@ComponentScan: basePackages 프로퍼티 값에 별도의 경로를 설정하지 않으면 해당 어노테이션이 위치한 패키지가 루트 경로가 되어 빈으로 등록할 클래스들을 탐색한다.
2) 쉬운 의존성 관리: Spring boot Starter를 통해 의존성과 설정을 자동화해준다.
3) 서블릿 컨테이너를 내장하고 있다. Tomcat이나 Jetty를 내장하고 있어서 jar 파일만으로 배포할 수 있다.
클라이언트에서 서버로 어떤 리소스로부터 정보를 요청하기 위해 사용하는 method이다.
controller class에 @RestController, @RequestMapping("/URI")를 정의하고
어떤 URI를 통해 컨트롤러로 들어올 것인지를 선언한다.
-> ex) http://localhost:8080/URI
아래와 같이 URI를 통한 처리, @RequestParam을 통해 파라미터를 넘기는 방식, model을 통한 json 전달 방식 3가지가 있다.
@RestController
@RequestMapping("/api") // Localhost:8080/api
public class GetController {
// @RequestMapping(method = RequestMethod.GET, path = "/getMethod") // Localhost:8080/api/getMethod
@GetMapping("/getMethod")
public String getRequest() {
return "Hi getMethod";
}
@GetMapping("/getParameter") // Localhost:8080/api/getParameter?id=1234&password=abcd
public String getParameter(@RequestParam String id, @RequestParam(name = "password") String pwd) {
String password = "bbbb";
System.out.println( "id : " + id);
System.out.println("pwd : " + pwd);
return id + pwd;
}
// Localhost:8080/api/multiParameter?account=abcd&email=study@gmail.com&page=10
@GetMapping("/getMultiParameter")
public SearchParam getMultiParameter(SearchParam searchParam) {
System.out.println(searchParam.getAccount());
System.out.println(searchParam.getEmail());
System.out.println(searchParam.getPage());
// json 형식 - {"account" : "", "email" : "", "page" : 0}
return searchParam;
}
}
리소스를 생성/업데이트하기 위해 서버로 데이터를 보내기 위해 사용하는 method이다.
RequestMapping으로 요청받은 URI에 대해 PostMapping을 선언하고 @RequestBody를 통해 model을 선언하고 선언한 model의 데이터를 json 형태로 호출한다.
@RestController
@RequestMapping("/api")
public class PostController {
// HTML <Form>, ajax 검색, httmp post body -> data
// json, xml, multipart-form / text-plain
// @RequestMapping(method = RequestMethod.POST, path = "posdMethod")
@PostMapping(value = "/postMethod")
public SearchParam postMethod(@RequestBody SearchParam searchParam) {
return searchParam;
}
}

*참고 자료
https://msyu1207.tistory.com/m/entry/Spring-VS-Spring-Boot-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90?category=640981
https://ssoco.tistory.com/66
https://velog.io/@shson/%EC%8A%A4%ED%94%84%EB%A7%81-controller%EC%97%90%EC%84%9C-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0%EB%A5%BC-%EB%B0%9B%EB%8A%94-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95-RequestParam-RequestBody-PathVariable