Java43 [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. [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. [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. [Spring] @SpringBootTest SpringBoot에서 테스트 시작하기 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 Spring Boot는 애플리케이션을 테스트하기 위한 많은 기능을 제공해 줍니다! Spring boot에서 테스트 모듈은 spring-boot-test와 spring-boot-test-autoconfigure가 존재하는데, 대부분의 경우는 spring-boot-starter-test만으로도 충분하며, spring-boot-starter-test는 spring boot의 테스트에 사용되는 Starter 패키지입니다. spring-boot-starter-test는 JUnit는 물론이고, AssertJ, Hamcrest를 포함한 여러 유용한 라이브러리를 포함하고 있습니다. spring-boo.. BackEnd/Spring 2022. 3. 7. [JDBC] PrepareStatement에서 TimeStamp, LocalDateTime 사용하기 글의 작성 이유 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번 글 에서는 JDBC를 사용하여 DB에 날짜를 저장하는 삽질에 대한 글을 작성하는 것 입니다. 우선 DB상에서 날짜를 Date, Timestamp 자료형으로 저장한 경우에 대하여 알아보자. 1. java.sql.Date 사용하기 만약 나의 Table에서 Date column을 사용중 이라면 사용할수가 있다. java.lang.String ps.setDate(2, java.sql.Date.valueOf("2013-09-04")); java.sql.Date.valueOf(java.lang.String) 메서드는 날짜에 대한 String을 다음과 같은 포멧으로 받을 수 있다. yyyy-MM-dd java.uti.. BackEnd/JDBC 2022. 3. 6. [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. 스프링 MVC 전체 구조 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 MVC도 프론트 컨트로러 패턴으로 구현되어있다. MVC의 프론트 컨트롤러가 바로 DisaptcherServlet 이다. ● DispacherServlet 서블릿 등록 DispacherServlet 도 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다. DispatcherServlet => FrameworkServlet => HttpServletBean => HttpServlet 스프링 부트는 DispacherServlet 을 서블릿으로 자.. BackEnd/Spring MVC 2022. 2. 25. [Java] Exception 기초 2종류의 Exception " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 Unchecked Exception – RuntimeException을 상속 Runtime Time Exception 이라고도 부른다. Exception이 발생하는 메소드에서 throws 키워드를 추가하거나, try-catch로 Exception을 처리할 필요가 없다. Exception을 처리해 줘도 상관은 없다. 컴파일 시점에 Exception을 catch하는지 확인하지 않는다. 컴파일 시점에 Exception이 발생할 것인지의 여부를 판단할 수 없다. Checked Exception과 Unchecked Exception 선택 방법 호출하는 메소드가 Exception을 활용해 무엇인가 의미 있는 .. BackEnd/Java 2022. 2. 23. [Spring] MVC 프레임워크 만들기 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 4. 단순하고 실용적인 컨트롤러 - v4 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난 글에서 만들었던 v3 컨트롤러는 서블릿의 종속성을 제거하고, 뷰 경로의 중복을 제거하는 기능을 하여 잘 설계된 컨트롤러 이다. 하지만 실제 개발자가 컨트롤러 인터페이스를 구현할때마다 항상 ModelView객체를 생성하고 반환해야 하는 부분이 번거롭다. 좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수 있어야 한다. 소위 실용성이 있어야 한다. 이번 V4는 좀더 개발자에게 실용적인 버전을 만들어 보자. 우선 그.. BackEnd/Spring MVC 2022. 2. 23. [Refactoring] 긴 매개변수 목록 (Long Parameter List) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 4. 긴 매개변수 목록 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 어떤 함수에 매개변수가 많을수록 함수의 역할을 이해하기 어려워 진다. 과연 그 함수는 한가지 일만 하고있는것이 맞는가? 불필요한 매개변수는 없는가? 하나의 레코드로 뭉칠수 있는 매개변수 목록은 없는가? 어떤 매개변수를 다른 매개변수를 통해 알아낼 수 있다면 => “매개변수를 질의 함수로 바꾸기 (Replace Parameter with Query)”를 사용할 수 있다. 기존 자료구조에서 세부적인 데이터를 가져와서 여러 매개변수로 넘기는 대신, “객체 통째로 넘기기 (Preserve Whole Object)”를 사용할 수 있다. 일부 매개변수들이 대.. BackEnd/Refactoring 2022. 2. 23. [Refactoring] 긴 함수 (Long Function) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 3. 긴 함수 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 긴함수와 잛은 함수의 기준은 몇줄일까? 이는 사람마다 다를 수 있다. 다만, 코드를 읽어 나갈때 "의도"가 한눈에 전달이 된다면 짧은 코드이고, "구현"에 해당하는 부분이 많아 한줄 한줄 읽어 나가야 한다면 긴 코드라고 할 수 있다. "과거에는" 작은 함수를 여러번 호출하면 더 많은 서브루틴의 호출로 인해 오버헤드가 있었지만, 요즘의 하드웨어는 너무나 성능이 좋기 때문에 고려하지 않아도 좋다. 사용해볼 리팩토링 기술 들로는~ 99%는 함수 추출하기로 해결 가능하다. 함수로 분리하면서 해당 함수로 전달해야 할 매개변수가 많아진다면 다음과 같은 리팩토링을 고려.. BackEnd/Refactoring 2022. 2. 22. 이전 1 2 3 4 다음