BackEnd263 [Spring] 스프링 타입 컨버터 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 타입 컨버터 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 다음과 같은 컨트롤러가 하나 있다고 하자! @GetMapping("/hello-v1") public String helloV1(HttpServletRequest request){ String data = request.getParameter("data"); // 문자 타입 조회 Integer intValue = Integer.valueOf(data); System.out.println("intValue = " + intValue); return "OK"; } HTTP 요청 파라미.. BackEnd/Spring MVC 2022. 3. 18. [Spring] API 예외 처리 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. 스프링이 제공하는 ExceptionResolver1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 부트가 기본으로 제공하는 ExceptionResolver 는 다음과 같다. HandlerExceptionResolverComposite 에 다음 순서로 등록되어 있다. 1. ExceptionHandlerExceptionResolver : @ExceptionHandler 를 처리한다. 2. ResponseStatusExceptionResolver : HTTP 상태코드를 지정해줄수 있다. 3. DefaultHandlerExceptionResolver.. BackEnd/Spring MVC 2022. 3. 15. [Spring] API 예외 처리 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 시작 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 API의 예외 처리는 기존과 다르다. 이전처럼 단순하게 고객에게 오류 페이지를 보여주는것으로 끝나지 않는다. API 방식은 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. ● ApiExceptionController - API 예외 컨트롤러 @Slf4j @RestController public class ApiExceptionController { @GetMapping("/api/members/{id}") public MemberDto getMember(@Pa.. BackEnd/Spring MVC 2022. 3. 14. [Spring] 예외 처리와 오류 페이지 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 6. 스프링 부트 - 오류 페이지 1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이전글에서 예외 처리 페이지를 만들기 위해 복잡한 과정을 거쳤다. 1) WebServerCustomizer 를 만들고 2) 예외 종류에 따라서 ErrorPage 객체를 추가하고 3) 예외 처리용 컨트롤러 ErrorPageController를 사용자가 직접 만들었다. 스프링 부트는 이러한 과정을 전부 기본적으로 제공한다. 1) ErrorPage를 자동등록 한다. 이때 경로는 /error 이라는 기본 경로로 오류 페이지를 설정한다. 따라서 서블릿 밖으로 예외가 발생하거나, r.. BackEnd/Spring MVC 2022. 3. 14. [Spring] 예외 처리와 오류 페이지 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 서블릿 예외 처리 - 시작 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 서블릿은 2가지 방식으로 예외 처리를 지원해 준다. 1) Exception 2) response.sendError(HTTP 상태 코드, 오류 메시지) 웹 어플리케이션 에서는 사용자 요청별로 thread가 할당된다. 해당 thread에서 예외가 발생했는데, try - catch로 예외를 처리하지 못한다면 어떻게 될까? => 톰캣 같은 WAS 까지 예외가 전달된다. WAS(여기까지 전파) HTML 삽입 미리보기할 수 없는 소스 예외가 WAS까지 전달되면 WAS는 예외를 처리하는 오.. BackEnd/Spring MVC 2022. 3. 14. [Spring] 로그인 처리2 - 필터, 인터셉터 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 3. 스프링 인터셉터 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 인터셉터는 서블릿 필터와 비슷하지만, 스프링 MVC가 제공하는 기술이다. ● 스프링 인터셉터의 흐름 HTTP 요청 ->WAS-> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 인터셉터는 프론트 컨트롤러(DispatcherServlet) 과 컨트롤러 사이에서 호출된다. 스프링 인터셉터에도 URL 패턴을 적용할 수 있는데, 서블릿 URL 패턴과는 다르고, 서블릿 보다 매우 정밀하게 설정할 수 있다. ● 스프링 인터셉터의 제한 HTTP 요청 -> WAS -> 필터 -> .. BackEnd/Spring MVC 2022. 3. 14. [Spring] 로그인 처리2 - 필터, 인터셉터 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 서블릿 필터 - 요청 로그 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스필터를 사용하여 사용자의 모든 요청에 로그를 남겨보자. ● LogFilter - 로그 필터@Slf4jpublic class LogFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { log.info("log filter init"); } @Override public void doF.. BackEnd/Spring MVC 2022. 3. 13. [JDBC] DAO 리팩토링 3 - DbTemplate 리팩토링 이전글을 기반으로 하는 리팩토링 기록 입니다. [JDBC] DAO 리팩토링 2 - 하나의 Template 으로 이동 다음과 같이 하나의 Template 안에 기존의 코드들을 전부 모아두었다. 기존 코드는 직전 글에서 설명했었다. [JDBC] DAO 리팩토링 1 - 개별 Template 만들기 이전 글의 코드를 리팩토링 한 과정입니다. 변 blogshine.tistory.com 1. DbTemplate 리팩토링 하기 기존 DbTemplate이 update 메서드는 다음과 같다. public Long executeUpdate(String sql, PreparedStatementSetter pss) { Connection connection = null; PreparedStatement pstmt = null.. BackEnd/JDBC 2022. 3. 13. [JDBC] DAO 리팩토링 2 - 하나의 Template 으로 이동 다음과 같이 하나의 Template 안에 기존의 코드들을 전부 모아두었다. 기존 코드는 직전 글에서 설명했었다. [JDBC] DAO 리팩토링 1 - 개별 Template 만들기 이전 글의 코드를 리팩토링 한 과정입니다. 변경 전의 코드는 다음과 같습니다. [JDBC] 순수 JDBC CRUD 코드 리팩토링 하기전의 중복 부분이 많은 코드. 이후의 글에서 점차 리팩토링 해가는 모습을 blogshine.tistory.com 1. 하나의 Template 안에 모인 코드들 - DbTemplate public abstract class DbTemplate { private final DataSource dataSource; public DbTemplate(DataSource dataSource) { this.dat.. BackEnd/JDBC 2022. 3. 13. [JDBC] DAO 리팩토링 1 - 개별 Template 만들기 이전 글의 코드를 리팩토링 한 과정입니다. 변경 전의 코드는 다음과 같습니다. [JDBC] 순수 JDBC CRUD 코드 리팩토링 하기전의 중복 부분이 많은 코드. 이후의 글에서 점차 리팩토링 해가는 모습을 남기겠습니다. 1. DbUserRepository @Primary @Repository public class DbUserRepository implements UserRepository { p.. blogshine.tistory.com 위 링크의 순수 JDBC 코드를 개발자가 구현해야 하는 영역(변경이 많은 부분) 과 라이브러리가 담당해야 하는 부분을 구분하였다. 내가 작성하고 있는 코드는 약간 위 사진과 다르기는 한데, 여튼 중복되는 부분은 두고 개발자가 변경해야 하는 부분만 함수로 뽑았다. @Ov.. BackEnd/JDBC 2022. 3. 12. [JDBC] 순수 JDBC CRUD 코드 리팩토링 하기전의 중복 부분이 많은 코드. 이후의 글에서 점차 리팩토링 해가는 모습을 남기겠습니다. 1. DbUserRepository @Primary @Repository public class DbUserRepository implements UserRepository { private final DataSource dataSource; public DbUserRepository(DataSource dataSource) { this.dataSource = dataSource; } @Override public Long save(User user) { String SQL = "INSERT INTO user_info (user_id, password, name, email) VALUES (?, ?, ?,.. BackEnd/JDBC 2022. 3. 12. [junit5] MockMvc에서 NestedServletException 통과시키기 직접 경함한 오류를 해결한 과정을 정리한 글 입니다. 1. 상황 우선 저의 코드에서 UserService는 인자로 받은 userId로 회원을 찾아보는데, 이때 만약 회원이 없다면 예외를 던지게 됩니다. @Service public class UserService { private final UserRepository repository; public UserService(UserRepository repository) { this.repository = repository; } // 생략... public User findUserById(String userId) { return repository.findById(userId) .orElseThrow(() -> new NotFoundException(U.. BackEnd/TDD 2022. 3. 11. 이전 1 ··· 10 11 12 13 14 15 16 ··· 22 다음