컨트롤러에서 직접 검증하는 것이나 Validator를 별도로 분리하는 방법은 상당히 번거롭다. 이를 위해 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화한 것이 바로 Bean Validation이다. 이를 잘 활용하면, 애너테이션 하나로 검증 로직을 매우 편리하게 적용할 수 있다. Bean Validation이란? Bean Validation은 특정 구현체가 아닌 Bean Validation 2.0(JSR-380)이라는 기술 표준인데, 여기엔 검증 애노테이션과 여러 인터페이션이 모여있다. Bean Validation을 구현한 기술 중 일반적으로 사용하는 구현체는 `하이버네이트 Validator`이다. 하이버네이트 Validator 관련 링크 공식 사이트 : https://hibernate..
컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 클라이언트로부터 오는 입력값을 제대로 검증하지 않는다면, 고치기 힘든 버그가 생길 수 있기 때문이다. 그렇기 때문에 이번 내용은 개발에 있어서 아주 중요한 내용이라고 해도 과언이 아니다. 클라이언트 vs 서버 검증 결론부터 말하자면, 클라이언트 검증과 서버 검증은 모두 필수이다. 클라이언트 검증은 조작할 수 있으므로 보안에 취약하다는 단점이 있지만, 즉각적인 고객 사용성을 올려주는 장점이 있다. 또한 서버 검증은 반대로 정확한 검증을 할 수 있지만, 고객 사용성이 떨어진다는 단점이 있다. 따라서 이 둘을 적절히 섞어서 사용하는 것이 좋다. 만약 API 방식을 사용한다면, API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에..
이 포스팅은 김영한 강사님의 강의를 토대로 정리한 글입니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - www.inflearn.com 스프링에서 기본적으로 제공하고 실무에서도 많이 쓰이는 기본적인 기능들에 대해서 알아보겠다. 스프링 MVC 기본 기능 스프링에서 Welcome Page 만들기 서블릿에서 Welcome Page를 만드는 방법은 여기를 살펴보..
스프링 MVC 구조 스프링의 MVC 구조는 다음과 같다. 스프링 MVC에선, FrontController 가 DispatcherServlet으로 구현되어 있으며 스프링 MVC의 핵심이라고 할 수 있다. DispatcherServlet 서블릿 DispatcherServlet은 HttpServlet을 상속하는 부모를 상속하고 있다. 또한, 스프링 부트는 DispatcherServlet을 서블릿으로 자동 등록하고 모든 경로 "urlPatterns="/" 에 대해서 매핑한다. 요청 흐름 서블릿이 호출되면 HttpServlet의 service()가 호출 SpringMVC는 DispatcherServlet의 부모인 FrameworkServlet에서 service()를 오버라이딩 해두었으며, 이 메서드에서 여러 메서..
이번 강의는 김영한 강사님의 강의를 토대로 정리한 글입니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - www.inflearn.com 간단히 구현한 MVC 프레임워크 이제부터 SpringMVC 패턴이 아닌 이를 직접 구현해보고 나서 몇가지들을 정리해보겠다. Front Controller 패턴 간단 소개 나는 이전 포스팅의 마지막에서 공통 처리를 하기 위..
이 포스팅은 김영한 강사님의 강의를 참고하여 포스팅을 한 것입니다. 문제가 생길 경우 즉시 처리하겠습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - www.inflearn.com 이전 포스팅을 통해 기본적으로 Servlet 은 어떻게 동작되는지 간단히 확인해 봤고, Request Response 객체의 사용법도 확인해 봤다. 그럼 이제 더 발전시켜서,..
이 포스팅은 김영한 강사님의 강의를 참고하여 포스팅을 한 것입니다. 문제가 생길 경우 즉시 처리하겠습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - www.inflearn.com 스프링 부트 서블릿 환경 구성 스프링 부트는 서블릿을 직접 등록할 수 있도록 @ServletComponentScan 을 지원한다. @ServletComponentScan 을 ..
요즘 알고리즘 풀이 포스팅 하는 시간을 줄이고, 문제를 더 푼다고 한동안 포스팅을 쉬었는데, 마침 어제부로 내가 수강하고 있는 Spring MVC 강의를 마친 기념으로 내가 이때까지 배운 것. 그리고 공부를 하면서 "어떻게 이게 동작되는 거지?"와 같은 의문이 든 많은 것들에 대해 정리를 해보도록 하겠다. Servlet Container 아주 단편적이게 얘기를 하자면, ServletContainer 는 클라이언트의 request가 들어오면, ThreadPool에 대기하고 있는 Thread를 배치하거나, 서블릿 객체의 life-cycle을 기본적으로 싱글톤 패턴으로 관리하는게 핵심 컨셉이다.그리고, ServletContainer(Tomcat)는 동시에 여러 클라이언트의 요청을 받아들일 수 있도록 멀티 쓰레..