Gradle
빌드 자동화 시스템
빌드란 소스코드를 실행 가능한 결과물로 만드는 일련의 과정
java 소스 코드 ➡️ jar 파일
Spring MVC
Model
- 데이터와 비즈니스 로직을 담당
- 데이터 베이스와 연동해 데이터를 불러오고 저장하는 작업을 수행
View
- 사용자 인터페이스를 담당
- 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현 (html)
Controller
- Model과 View 사이의 상호작용을 조정하고 제어
- 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트
데이터를 Client에 반환하는 방법
- JSON 데이터 반환하는 방법
템플릿 엔진이 적용된 SpringBoot에서는 Controller에서 문자열을 반환하면 templates 폴더에서 해당 문자열의 .html 파일을 찾아서 반환한다.
@GetMapping("/html/templates")
public String htmlTemplates() {
return "hello";
}
따라서 html 파일이 아닌 JSON 데이터를 브라우저에 반환하고 싶다면 해당 메서드에 @ResponseBody 애너테이션을 추가해줘야 한다.
@GetMapping("/response/json/string")
@ResponseBody
public String helloStringJson() {
return "{\"name\":\"Robbie\",\"age\":95}";
}
+ "(큰 따옴표)는 그냥 쓰면 출력이 안되므로 앞에 \을 붙여준다.
Spring에서 자동으로 객체를 JSON으로 변환해 준다.
@GetMapping("/response/json/class")
@ResponseBody
public Star helloClassJson() {
return new Star("Robbie", 95);
}
- @RestController
@RestController를 사용하면 해당 클래스의 모든 메서드에 @ResponseBody 애너테이션이 추가되는 효과를 부여할 수 있다.
@RestController = @Controller + @ResponseBody
Serialize(직렬화)
Object ➡️ JSON
@Test
@DisplayName("Object To JSON : get Method 필요")
void test1() throws JsonProcessingException {
Star star = new Star("Robbie", 95);
ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper
String json = objectMapper.writeValueAsString(star);
System.out.println("json = " + json);
}
Object를 JSON 타입의 String으로 변환하기 위해서는 해당 Object에 get Method가 필요하다.
Deserialize(역직렬화)
JSON ➡️ Object
@Test
@DisplayName("JSON To Object : 기본 생성자 & (get OR set) Method 필요")
void test2() throws JsonProcessingException {
String json = "{\"name\":\"Robbie\",\"age\":95}"; // JSON 타입의 String
ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper
Star star = objectMapper.readValue(json, Star.class);
System.out.println("star.getName() = " + star.getName());
}
JSON 타입의 String을 Object로 변환하기 위해서는 해당 Object에 기본 생성자와 get 혹은 set 메서드가 필요하다.
'TIL > WEEK5' 카테고리의 다른 글
SpringBoot의 JPA (0) | 2023.06.15 |
---|---|
IoC와 DI (1) | 2023.06.14 |
1주차 숙제 (0) | 2023.06.13 |