spring69 [Spring] 검증1 - Validation - 4 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 10. 오류 코드와 메시지 처리 5 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ● 핵심은 구체적인 것 을 먼저 사용하고, 덜 구체적일수록 나중에 사용한다. MessageCodesResolver 는 required.item.itemName 처럼 구체적인 것을 먼저 만들어주고, required 처럼 덜 구체적인 것을 가장 나중에 만든다. 그럼 왜 이런식으로 오류코드를 만들까? 모든 오류코드에 대하여 메시지를 전부 다 만들기는 힘들다. 일반적이면서 중요하지 않은 메시지는 범용적인 오류 코드인 required 와 같이 사용하고, 정말 중요한 내용은 필요할때 .. BackEnd/Spring MVC 2022. 3. 6. [Spring] 검증1 - Validation - 3 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 6. 오류 코드와 메시지 처리 1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 위에서는 오류 메시지를 직접 추가해줬었는데, 이렇게 직접 추가하다보면 통일성이 없어 진다. 같은 내용의 오류메시지 이지만, 구문이 조금씩 달라질수도 있다. 이를 좀더 효율적으로 오류 메시지를 다루어 보자. properties에 한번에 저장해두고, 메시지처럼 사용할수가 있다. 이러한 활용법을 알아보기 전에 우선 FieldError 생성자를 다시한번 살펴보자. ● FieldError 생성자 public FieldError(String objectName, String field,.. BackEnd/Spring MVC 2022. 3. 6. [Spring] 검증1 - Validation - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 3. BindingResult 1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링이 제공하는 BindingResult를 통해 검증 오류 처리 방법을 알아보자. ● addItemV1 우선 이전 글에서 하나하나 검증하던 코드가 어떻게 변경되었는지 확인해 보자. @PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { // 검증 로직 if.. BackEnd/Spring MVC 2022. 3. 6. [Spring] 검증1 - Validation - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 검증 직접 처리 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 그리고 정상 로직보다 이런 검증 로직을 잘 개발하는 것이 어쩌면 더 어려울 수 있다. 우선 상품 저장이 검증 실패되는 경우를 그림으로 살펴봅시다. 고객이 폼에 입력한 값이 지정된 범위를 넘어가거나, 또는 너무 작은경우 서버에서 검증 로직이 실패해야 한다. 이렇게 검증에 실패한 경우 고객이 보냈던 실패한 데이터를 Model에 저장하여 다시 반환함으로써 어떤 값을 잘못 입력했는지를 알려줘야 한다 만약 검증이 .. BackEnd/Spring MVC 2022. 3. 5. [Spring] 메시지, 국제화 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 메시지 소스 설정 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링은 기본적으로 메시지 관리 기능을 제공한다. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 되는데, MessageSource는 인터페이스다. 따라서 구현체인 ResourceBundleMessageSource 를 스프링 빈으로 등록하면 된다. 직접 등록하는 방식을 코드로 살펴보자. @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageS.. BackEnd/Spring MVC 2022. 3. 5. [Spring] 스프링 MVC - 기본 기능 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. HTTP 요청 파라미터 - @ModelAttribute " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이전까지는 요청 파라미터를 받아서 필요한 인자를 추출하고, 그 값들을 객체를 만들어 넣어주는 방식을 취하였다. 다음과 같이 말이다. @RequestParam String username; @RequestParam int age; HelloData data = new HelloData(); data.setUsername(username); data.setAge(age); 스프링은 이 과정을 자동적으로 처리해주는 @ModelAttribute 기능을 지원.. BackEnd/Spring MVC 2022. 2. 27. [Spring] 스프링 MVC - 기본 기능 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 요청 매핑 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ● MappingController @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping("/hello-basic") public String h.. BackEnd/Spring MVC 2022. 2. 26. [Spring] 스프링 MVC - 구조 이해 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 MVC 전체 구조 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 MVC도 프론트 컨트로러 패턴으로 구현되어있다. MVC의 프론트 컨트롤러가 바로 DisaptcherServlet 이다. ● DispacherServlet 서블릿 등록 DispacherServlet 도 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다. DispatcherServlet => FrameworkServlet => HttpServletBean => HttpServlet 스프링 부트는 DispacherServlet 을 서블릿으로 자.. BackEnd/Spring MVC 2022. 2. 25. [Spring] MVC 프레임워크 만들기 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 4. 단순하고 실용적인 컨트롤러 - v4 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난 글에서 만들었던 v3 컨트롤러는 서블릿의 종속성을 제거하고, 뷰 경로의 중복을 제거하는 기능을 하여 잘 설계된 컨트롤러 이다. 하지만 실제 개발자가 컨트롤러 인터페이스를 구현할때마다 항상 ModelView객체를 생성하고 반환해야 하는 부분이 번거롭다. 좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수 있어야 한다. 소위 실용성이 있어야 한다. 이번 V4는 좀더 개발자에게 실용적인 버전을 만들어 보자. 우선 그.. BackEnd/Spring MVC 2022. 2. 23. [Spring] 웹 애플리케이션 이해 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 웹 서버, 웹 애플리케이션 서버 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 웹은 모든 것이 HTTP 기반으로 작동한다. - HTML, TEXT - IMAGE, 음성, 영상, 파일 - JSON, XML (API) - 거의 모든 형태의 데이터 전송 가능 - 서버 간에 데이터를 주고받을 때도 대부분 HTTP 사용 ● Web Server Web Server의 기능 HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스하는 기능을 담당한다. 요청에 따라 아래의 두 가지 기능 중 적절하게 선택하여 수행한다. 1) 정적인 .. BackEnd/Spring MVC 2022. 2. 12. [Spring] 빈 생명주기 콜백 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 생명주기 콜백 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 개발자는 의존관계 주입이 모두 완료된 시점을 어떻게 알고 사용할까? 스프링은 의존관계 주입이 완료되면 스프링빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공한다! 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 통하여 clean up 과정을 갖도록 해준다. 싱글톤 스프링 빈의 라이프 사이클은 다음과 같다. 스프링컨테이너생성 => 스프링빈생성 => 의존관계주입 => 초기화콜백 => 사용 => 소멸전 콜백 => 스프링 종료 다만 위의 라이프 사이클은 sett.. BackEnd/Spring 2022. 2. 7. [Spring] 의존관계 자동 주입 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 옵션 처리 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간에는 옵션처리를 공부하였다. 이는 주입할 스프링 빈이 없을때도 동작하도록 하는 과정이였다. 기본적으로 @Autowired는 required = true 이기 때문에 자동 주입대상이 없으면 오류가 발생한다. 3가지 방식으로 처리가 가능했다. 1) @Autowired(required = false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안되는 방식 2) org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null이 입력된다. 3).. BackEnd/Spring 2022. 2. 5. 이전 1 2 3 4 5 6 다음