일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- QueryDSL
- 스프링 핵심 기능
- Thymeleaf
- http
- spring
- Exception
- AOP
- 백준
- pointcut
- Servlet
- JDBC
- db
- 그리디
- SpringBoot
- Proxy
- 알고리즘
- jpa
- 인프런
- 자바
- Greedy
- java
- 김영한
- Spring Boot
- kotlin
- 스프링 핵심 원리
- transaction
- JPQL
- 스프링
- springdatajpa
- Android
- Today
- Total
목록Exception (11)
개발자되기 프로젝트
애플리케이션에서 트랜잭션을 어떤 계층에 걸어야 할까? 쉽게 이야기해서 트랜잭션을 어디에서 시작하고, 어디에서 커밋해야할까? 비즈니스 로직과 transaction 트랜잭션은 비즈니스 로직이 있는 서비스 계층에서 시작해야 한다. 비즈니스 로직이 잘못되면 해당 비즈니스 로직으로 인해 문제가 되는 부분을 함께 롤백해야 하기 때문이다. 그런데 트랜잭션을 시작하려면 커넥션이 필요하다. 결국 서비스 계층에서 커넥션을 만들고, 트랜잭션 커밋 이후에 커넥션을 종료해야 한다. 애플리케이션에서 DB 트랜잭션을 사용하려면 트랜잭션을 사용하는 동안 같은 커넥션을 유지해야한다. 그래야 같은 세션을 사용할 수 있다. 커넥션과 세션 애플리케이션에서 같은 커넥션을 유지하려면 어떻게 해야할까? 가장 단순한 방법은 커넥션을 파라미터로 전..
1. ErrorResponse 다음과 같이 Error발생시 Response를 내려준다고 해보자. data class ErrorResponse( @field:JsonProperty("result_code") var resultCode: String?=null, @field:JsonProperty("http_status") var httpStatus: String?=null, @field:JsonProperty("http_method") var httpMethod : String?= null, var message: String?=null, var path: String?=null, var timestamp: LocalDateTime?= null, var errors: MutableList? = mutabl..
[API예외] @ControllerAdvice @ExceptionHandler 를 사용해서 예외를 깔끔하게 처리할 수 있게 되었지만, 정상 코드와 예외 처리 코드가 하나의 컨트롤러에 섞여 있다. @ControllerAdvice 또는 @RestControllerAdvice 를 사용하면.. bsh-developer.tistory.com @ControllerAdvice는 Controller에서 발생하는 Exception을 어떻게 처리할지 따로 분류해서 관리할 수 있도록 도와줌. 말 그대로 Controller에 대한 Advice이다. 아래와 같이 IndexOutOfBounds Exception이 무조건 발생하는 Controller가 있다고 해보자. @RestController @RequestMapping("/a..
1. Return값 분석 { "results" : [ { "address_components" : [ .... }, "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA", "plus_code": { "compound_code": "CWC8+W5 Mountain View, California, United States", "global_code": "849VCWC8+W5" }, "types" : [ "street_address" ] } ], "status" : "OK" } GoogleGeoCoding을 상태값을 바로바로 return한다. OK OK ZERO_RESULTS indicates that the geocode was successful but returned no resul..
1. 사용자 정의 예외 클래스 구현 자바에서 제공되는 예외 클래스 외에 직접 만들어야 하는 예외가 있을 수 있음 기존 예외 클래스 중 가장 유사한 예외 클래스에서 상속받아 사용자 정의 예외 클래스 생성 기본적으로 Exception 클래스를 상속해서 만들 수 있음. 2. 예) password에 대한 예외 처리 패스워드를 입력할 때 다음과 같은 경우 오류처리 비밀번호 null 비밀번호 길이 5 미만 비밀번호가 문자로만 이루어진 경우(특수 문자 포함해야 함) public class PasswordTest { private String password; public String getPassword() { return password; } public void setPassword(String password)..
1. try - catch 문 try 블록에는 예외가 발생할 가능성이 있는 코드 작성. try 블록 안에서 예외가 발생하면 catch 블록이 수행됨 try-catch로 예외 처리를 하면 예외 발생시 비정상 종료가 되지 않고 계속 실행됨. try{ 예외가 발생할 수 있는 코드 } catch(처리할 예외 타입 e){ try 블록 안에서 예외가 발생했을 때 예외를 처리하는 부분 } //정상 상황 일 경우 실행되는 구간 //try-catch로 예외처리를 하지 않으면 예외 발생시 해당 구간 실행되지 않고 비정상 종료 //try-catch로 예외처리 하면 예외 발생해도 코드가 실행됨. public class ArrayIndexException { public static void main(String[] args)..
1.예외를 ExceptionResolver에서 마무리하기 예외가 발생하면 WAS까지 예외가 던져지고, WAS에서 오류 페이지 정보를 찾아서 다시 /error 를 호출하는 과정은 생각해보면 너무 복잡하다. ExceptionResolver 를 활용하면 예외가 발생했을 때 이런 복잡한 과정 없이 ExceptionResolver에서 문제를 깔끔하게 해결- > BasicErrorController호출하는 등의 절차가 없음. 2. UserException 임의의 예외를 만듦 public class UserException extends RuntimeException{ public UserException() { super(); } public UserException(String message) { super(me..
API예외 처리는 SpringBoot의 기본 오류 처리 방식을 사용할 수 있음. 1. BasicErrorController SpringBoot가 제공하는 기본 ErrorController @Controller @RequestMapping("${server.error.path:${error.path:/error}}") public class BasicErrorController extends AbstractErrorController { @RequestMapping(produces = MediaType.TEXT_HTML_VALUE) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {} @Reques..