본문 바로가기

Spring45

#10 스프링 타입 컨버터 스프링 타입 컨버터 개발을 하다 보면, 타입을 변환해야 하는 경우가 상당히 많다. 개발자가 이런 타입 변환 작업을 하나하나 해야 한다면, 매우 힘들 것이다. 스프링은 타입 변환이 필요하면 스프링 타입 컨버터를 이용해서 타입 변환을 필요한 곳에 자동으로 처리해준다. 스프링 타입 컨버터에 의한 변환은 다음과 같은 경우에 적용된다. ● 스프링 MVC 요청 파라미터 ◎ @RequestParam, @ModelAttribute, @PathVariable ● 뷰 렌더링 ● @Value 등으로 YML 정보 읽기 생각해보면 @ModelAttribute 같은 애노테이션을 사용하면 파라미터가 자동으로 내가 지정한 객체의 필드의 타입에 맞춰서 넣어진다. 이처럼 문자 → 특정 타입의 변환 과정이 자동으로 이루어지는 것은 스프링.. 2021. 8. 3.
#9 API 예외 처리 API 예외 처리 HTML 페이지의 경우 BasicErrorController에 의해서 4xx, 5xx와 같은 오류 페이지만 있으면 대부분의 문제를 해결할 수 있었다. 하지만 API의 경우 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. BasicErrorController는 클라이언트 요청의 Accept 헤더 값에 따라 에러를 다르게 처리한다. [BasicErrorController 코드] @RequestMapping(produces = MediaType.TEXT_HTML_VALUE) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {} @RequestMa.. 2021. 8. 3.
#8 예외 처리와 오류 페이지 예외 처리와 오류 페이지 1. 서블릿 예외 처리 순수 서블릿 컨테이너는 다음 두 가지 방식으로 예외 처리를 지원한다. ● Exception(예외) ◎ 자바 직접 실행 자바의 메인 메서드를 직접 실행하는 경우 main이라는 이름의 쓰레드가 실행된다. 실행 도중에 예외를 잡지 못하고 main 까지 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료된다. ◎ 웹 어플리케이션 웹 어플리케이션은 사용자 요청 별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다. 만약 어플리케이션에서 예외를 잡지 못하고, 서블릿 밖까지 예외가 전달되면 WAS 까지 예외가 전달된다. 스프링 부트에서는 WAS에 예외가 전달되면 기본적으로 예외 페이지를 제공한다. [whitelabel error page] 스프링 부트에.. 2021. 8. 2.
#7 로그인 처리 - 필터, 인터셉터 로그인 처리 - 필터, 인터셉터 앞서 만들었던 상품 관리 서비스에서 상품 관리 페이지와 같은 경우 로그인 한 사용자만 이용할 수 있어야 한다. 지금까지 개발한 로그인 서비스에서는 로그인 하지않은 사용자에게는 상품 관리 버튼이 보이지 않기 때문에 문제가 없어 보인다. [홈 화면 - 로그인 상태] 문제는 로그인 하지 않은 사용자도 다음 URL을 직접 호출하면 상품 관리 화면에 들어갈 수 있다는 것이다. http://localhost:8080/items 상품 관리 컨트롤러에서 로그인 여부를 하나하나 작성하면 되지만, 등록, 수정, 삭제, 조회 등 상품관리의 모든 컨트롤러에 공통으로 로그인 여부를 확인하는것은 매우 번거롭다. 이러한 공통 관심사는 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는.. 2021. 8. 1.