Back-End 작업실/Spring Framework(67)
-
[Spring] ResponseEntity
🚀 ResponseEntity 🔽 개요 `Spring Framework`에서 제공하는 Class 중 `HttpEntity`라는 Class가 존재하는 것이에요. 이 친구는 `HTTP Request 또는 Response`에 해당 하는 `HttpHeader`와 `HttpBody`를 포함하는 Class인 것이에요. public class HttpEntity { private final HttpHeaders headers; @Nullable private final T body; } public class RequestEntity extends HttpEntity public class ResponseEntity extends HttpEntity `HttpEntity` Class를 상속 받아 구현한 Class..
2022.03.28 -
[Spring] @PathVariable 그리고 @RequestParam
🚀 개요 Spring으로 Web Service를 만들기 위해 Controller를 만들게 되면 Client에서 URI에 Parameter로 요청을 하는 경우가 있는 것이에요. 이 때 아래 두 가지를 이용해서 요청을 하게 되는게 대표적이랍니다. 첫째 : http//localhost?index=1&page=2 둘째 : http://localhost/index/1 첫번째의 경우 Parameter의 값과 Key(name - 이름)을 함께 전달하는 방식으로 Query String이라고도 하며, 게시판 등에서 Page 검색 및 검색 정보를 전달하는 경우 많이 사용하는 것이에요. 두번째 경우는 REST API에서 값을 호출할 때, 이용하는 방법이랍니다. 🔽 @RequestParam 개요에서 첫번째의 경우 @Reque..
2022.03.22 -
[Spring] @Controller와 @RestController의 차이
🚀 개요 Spring에는 Controller를 지정해 주기 위해 두 가지 Annotaion이 준비 되어 있는 것이에요. 첫번째는 `@Controller`가 있고, 두번째는 `@RestController`가 있는 것이에요. 두 친구의 주요 차이점은 `HTTP Response Body`가 생성되는 방식에 있답니다. 🚀 @Controller - Spring MVC Controller 🔽 Controller - View 전통적인 Spring MVC Controoler인 `@Controller`는 주로 View 변환하기 위해 사용하는 것이에요. 아래 그림과 같은 과정을 통해 Spring MVC Controller는 Client의 요청에서 View를 반환하는 것이에요. ● Client(Front End)는 URI ..
2022.03.22 -
[Spring] @Transactional과 rollbackFor 속성
🚀 @Transactional과 rollbackFor 속성 Spring은 @Transactional이 붙은 Class에 Proxy를 생성하는 것이에요. Proxy는 트랜잭션 로직을 Method 앞 뒤에 넣어 준답니다. 주니하랑은 @Transactional에 rollbackFor 속성을 이용하여 Exception.class를 등록한 것이에요. 이 의미는 Spring에게 'Run Time Exception이 터지면 Roll Back 해줘!' 라고 하는 것이에요. 만약 이렇게 @Transactional에 속성을 주지 않으면 Spring은 RuntimeException.class, Error.class를 선언했다고 이해하는 것이에요. 즉, Default 속성이 이것이라는 것이지요. 하지만, 이렇게 checked..
2022.03.11 -
[Spring] @RequestBody와 @ResponseBody란?
🚀 @RequestBody와 @ResponseBody란? 스프링에서 비동기 처리를 하는 경우 @RequestBody와 @ResponseBody를 사용하는 것이에요. 주니하랑은 Server 개발로는 maven 기반 Spring으로, Client는 Vue.js를 공부하면서 개인 프로젝트를 해 보고 있는 것이에요. Vue.js는 대표적인 비동기 처리 기반 Client Java Script의 Framework랍니다! 🔽 Client와 Server의 비동기 통신 이야기 클라이언트에서 서버로 통신하는 Message를 요청(Request)라고 하고, 서버에서 클라이언트로 통신하는 메시지를 응답(Response)라고 하는 것이에요. 웹에서 새로고침(화면전환) 없이 이루어지는 동작들은 대부분 비동기 통신으로 이뤄지는 것..
2022.03.11 -
[Spring] VO, DAO, DTO, Entity에 대해서
🚀 VO( Value Object ) 🔽 개념 Value Object는 DTO와 동일한 개념이나 차이점은 read only 속성을 갖는 것이에요. Value Object는 관계 데이터 베이스의 레코드에 대응되는 자바 클래스인 것이에요. 형태는 db 레코드를 구성하는 필드들을 Value Object의 Attribute로 하고 해당 변수에 접근할 수 있는 Getter, Setter 메소드의 조합으로 클래스가 형성되어진 클래스인 것이에요. 💡 참고: JPA의 Entity에서는 Setter 사용을 지양하나, VO는 아니다. 특성은 대체로 불변성이고 equlas()로 비교할 때 객체의 모든 값을 비교해야 하는 것이에요. 프로그램의 사용자가 화면에서 어떤 데이터를 입력하거나 조회 요청이 왔을 때 입력된 데이터..
2022.03.09