본문 바로가기

전체 글46

Validator Validatorpublic interface Validator { boolean supports(Class clazz); void validate(Object target, Errors errors);}Spring이 체계적으로 검증 기능을 도입하기 위해 해당 인터페이스 제공supports() : 해당 검증기를 지원하는 여부 확인validate(Object target, Errors errors) : 검증 대상 객체와 BindingResult를 넘겨서 검증을 수행하고 오류가 있으면 담음Errors는 BindingResult의 상위 인터페이스1. 직접 호출Validator 구현@Componentpublic class ItemValidator implements Validator { @O.. 2024. 6. 28.
BindingResult BindingResultSpring이 제공하는 검증 오류 처리 방법의 핵심Spring이 제공하는 검증 오류를 보관하는 객체검증 오류 발생 시 해당 객체에 보관@RequestParam, @ModelAttribute에서 바인딩 에러가 발생하는 경우 해당 객체에 에러 내용이 담김@ModelAttribute에 데이터 바인딩 시 오류가 발생해도 컨트롤러가 호출 됨BindingResult가 없는 경우 : 400 error 발생, 컨트롤러 호출X, 오류 페이지로 이동BindingResult가 있는 경우 : 오류 정보를 BindingResult에 담아서 컨트롤러 정상 호출BindingResult 위치는 검증할 대상 바로 다음에 위치검증할 대상 바로 다음에 위치하기 때문에 어떤 객체를 대상으로 검증하는지 target을 .. 2024. 6. 27.
Model과 @ModelAttribute ModelModel은 객체Spring이 지원하는 기능으로, Key와 Value로 이루어진 HashMapController에서 addAttribute("key", value)를 통해 View에 전달할 데이터를 저장할 수 있음Servlet의 request.setAttribute()와 비슷한 역할따로 반환이 필요 없음사용 예시@Controllerpublic class ModelTest { // 파라미터를 통한 전달 @GetMapping("/test") public String testMethod(@RequestParam name, Model model){ model.addAttribute("name", name); return "Ok"; }} T.. 2024. 6. 8.
@Controller와 @RestController @Controller@Controller는 Spring MVC의 Controller로 주로 View를 반환하기 위해 사용하지만 @ResponseBody를 통해 Data를 반환해야 하는 경우가 존재@RestContoller@RestController는 @Controller와 @ResponseBody가 합쳐진 형태로 JSON 형태의 객체 데이터를 반환@ResponseBody가 적용되므로 선언 필요XView 템플릿을 사용하는 것이 아니라, HTTP 메시지 바디에 직접 데이터를 입력Rest API(HTTP API)를 만들 때 사용하는 컨트롤러View 반환 과정클라이언트는 URL 형식으로 요청을 보냄DispatcherServlet이 요청을 위임할 Handler Mapping을 찾음Handler Mapping을 통.. 2024. 6. 6.
@RequestBody와 @ResponseBody HTTP 메시지 구조message body서버 간의 HTTP 통신에서 요청과 응답을 보낼 때, 필요한 데이터를 담아서 보내는 공간HTML, 이미지, JSON 등 byte로 표현할 수 있는 모든 데이터 전송 가능{"id" : "1", "name" : "test"} // body 예시(JSON 형식)@RequestBodyHttpRequest의 본문 requestBody의 내용을 자바 객체로 매핑하는 역할(HTTP 요청의 body 내용 -> Java)DispatcherServlet에서 해당 HttpRequest의 미디어 타입을 확인하고, 타입에 맞는 MessageConverter를 통해 요청 본문인 requestBody를 통째로 변환하여 메서드로 전달클라이언트측에서 요청 데이터를 body에 담고 conten.. 2024. 6. 6.
애노테이션(Annotation) 애노테이션(Annotation): 사전적 의미로는 주석을 의미하나, 일반적인 주석과 다르게 코드를 작성할 수 있음. 클래스, 메서드, 변수, 매개변수 등에 사용이 가능하며 문자 @로 시작Bean빈(Bean)은 스프링 컨테이너가 관리하는 자바 객체를 뜻함인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 함(new 대신 사용)사용하는 가장 큰 이유는 스프링 간 객체가 의존관계를 관리하도록 하는 것에 큰 목적. 객체가 의존관계를 등록할 때 스프링 컨테이너에서 해당하는 빈을 찾고, 그 빈과 의존성을 만듬Bean을 주입받는 방식@Autowiredsetter method@AllArgsConstructor(생성자)@Bean개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean에 등록하.. 2024. 5. 23.