본문 바로가기

2021/07

(2)
PRG 패턴 (Post-Redirect-Get) - 삽질중인 개발자 최근 발생한 이슈 중 중복 결제에 대한 이슈가 있어서 원인을 찾아보는 중에 브라우저에서 새로고침이나 뒤로 가기를 했을 경우 이전에 보내진 POST 요청이 다시 보내져 중복 결제가 일어나는 버그가 있다는 것을 발견했다. 이러한 새로고침 버그에 대해서 회피할 수 있는 방법을 찾아보는 중 PRG 패턴에 대해서 알게 되어 정리 차원에서 포스팅을 한다. PRG 패턴 (Post-Redirect-Get) 웹 개발 패턴 중 자주 쓰이는 패턴으로 HTTP POST 요청에 대한 응답이 또 다른 URL로의 GET 요청을 위한 리다이렉트(응답 코드가 3XX) 여야 한다는 것을 의미한다. 즉, 쉽게 설명하면 POST 방식으로 온 요청에 대해서 GET 방식의 웹페이지로 리다이렉트 시키는 패턴을 말한다. PRG 패턴을 사용하지 않..
@Transactional Rollback이 안되는 이유, @Transactional 사용시 주의 사항 - 삽질중인 개발자 개발을 하다 보니 예외(Exception)에 대해서 아무 생각 없이 사용하다가 심각한 버그를 발견하게 되어서 글을 정리한다. 아마 초보 개발자들이 가장 많이 하는 실수 중 하나 아닐까 싶다. 아래의 코드는 문자열을 넘겨주면 해당 문자열의 길이를 반환해주는 함수이다. public int getLength(String str) throws Exception{ if(str == null){ throw new Exception(); } return str.length(); } 그냥 봤을 때는 null일 때 유효성 검사도 되어 있고 유효성 검사에서 걸리면 Exception까지 던져주는 문제없어 보이는 코드처럼 보인다. 만약 위에 있는 함수를 사용해서 스프링에서 제공하는 @Transactional 어노테이션을 사용..