분류 전체보기
-
Spring에서 HttpServletRequest의 반복적 읽기 (feat. Filter에서는 request 교체가 가능한 이유)Spring 2023. 8. 22. 22:30
이전에 정리했던 내용을 리더님에게 피드백 받으면서 한가지 추가적인 피드백을 받게 되었다. Interceptor와는 다르게 Filter에서는 request / response 값을 조작하는 것이 가능하다는 표를 넣었는데, Http request를 다른 값으로 바꿔칠 수는 있지만 request의 내부 parameter값을 조작하는 것은 Filter에서라도 불가능 하다는 것을 추가로 배웠다. 또, 추가로 HttpServletRequest가 반복적으로 읽기가 불가능 하다는 피드백을 받아 추가 공부를 해보았다! Filter에서는 request의 교체가 가능한 이유 먼저 Interceptor와 다르게 Filter에서 request 값 교체가 가능한 이유는 다음과 같다. // Filter @Component clas..
-
인증 예외 처리 문제 해결 (2) - Spring Security의 인증 / 인가 예외 처리JAVA/Java 2023. 8. 21. 22:54
(지난 편,,,) ↓ https://dodop-blog.tistory.com/447 AuthenticationEntryPoint와 ControllerAdvice 최근에 sprign security를 이용한 인증 처리 과정을 구현하다가 리더님께 다음의 코드에서 예외처리가 예상한대로 동작하지 않을 것이라는 리뷰를 받았다. 내가 구현한 예외처리 코드를 예시로 보 dodop-blog.tistory.com 지난 편에서는 Filter에서 발생한 예외는 이를 처리하는 또 다른 Filter를 구현하여 예외를 처리할 수 있다고 하였다. 그런데, 이번에 발생한 문제는 Filter구현이 아닌 AuthenticationEntryPoint 구현만으로 원하는 에외 처리를 할 수 있었다. 어떻게 된 걸까? 이와 관련해서 Sprin..
-
인증 예외 처리 문제 해결 (1) - Filter와 InterceptorJAVA/Java 2023. 8. 20. 17:31
최근에 spring security를 이용한 인증 처리 과정을 구현하다가 리더님께 다음의 코드에서 예외처리가 예상한대로 동작하지 않을 것이라는 리뷰를 받았다. 내가 구현한 예외처리 코드를 예시로 보자면 예외 발생시 Controller Advice에서 예외를 정해진 ErrorResponse의 타입으로 반환하는 코드였다. @ControllerAdvice class ApiControllerAdvice { @ExceptionHandler(Exception::class, RuntimeException::class) fun exceptionHandle(exception: Exception): ResponseEntity { val standardError = ErrorResponse.of(exception) retu..
-
HikariPool- Failed to validate connection warning 해결하기데이터베이스/MYSQL 2023. 7. 15. 17:24
운영하는 서비스에서 30분 간격으로 HikariPool- Failed to validate connection warning 오류가 발생했다. 문제 상황 운영환경에서는 datadog에서 5분동안 warn 이나 error 로그가 10개 이상 발생하면 슬랙을 이용해서 오류 메세지를 보내도록 설정해두었는데, 동일한 warning이 resolve 후에도 30분 간격으로 발생해 오류 alert가 발생하고 있었다. data dog에서 확인해보니 오류 메세지는 다음과 같았다. HikariPool-1 - Failed to validate connection software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ConnectionImpl@5f4fcf76 (The active S..
-
개발 로그 - 2023년 상반기학습로그 2023. 7. 2. 18:08
벌써 2023년 상반기가 지나갔다,,,! 오랜만에 블로그를 들어오니 마지막 개발로그가 작년 10월 이었다니,,, 🤦♀️ 너무나 오랜만에 써보는 개발 로그,,, 간단하게 여태까지 뭘하면서 보냈나 정리할 겸 오랜만에 개발로그를 써본다. 🌱 2022년 11월 ~ 12월 먼저, 작년 11월 부터 12월까지는 동기들과 도그푸딩 프로젝트에 들어가서 2주 단위의 3번의 스프린트를 보냈다. 도그푸딩으로 진행한 프로젝트는 운영환경에 적용되지는 않았지만, 오히려 그 덕분에 제한없이 카프카, webflux 등 각자 배우고 적용해보고 싶은 것을 하면서 보낼 수 있었다! 으쌰으쌰 진행해서 같이 재밌게 진행했는데, 운영에 반영되지는 못해서 자세히 쓸 수 없어 아쉽다,,,! https://dodop-blog.tistory.com..
-
Transaction Propagation과 예외 전파Spring 2023. 2. 12. 18:04
이번 프로젝트를 진행하면서 try catch 예외처리 및 noRollbackFor 처리를 해준 부모 트랜잭션에서 계속해서 자식 트랜잭션의 예외 때문에 롤백되는 현상이 발생했는데,' 왜 롤백 하지 않도록 처리 했는데 예외가 발생했는가?'를 알아보면서 트랜잭션 전파와 예외에 대해서 공부하게 되었다. 알고보니 처리를 엉뚱한데에 해줘서 생긴 문제,,, 🤦🏻♀️ 트랜잭션 전파 트랜잭션 전파란 트랜잭션의 경계에서 이미 진행중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식을 말한다. 트랜잭션 전파 종류 PROPAGATION_REQUIRED 진행중인 트랜잭션이 없으면 새로 시작하고 이미 시작된 부모 트랜잭션이 있으면 이에 참여 DefaultTransactionDefinition의 트랜잭션 ..
-
Github Actions를 이용한 CI / CD 구현하기GIT 2022. 11. 27. 15:01
이전에 Jenkins를 이용하여 CI / CD를 구현한 적이 있는데, 이 부분을 Github Action을 이용하면 매우 간단하게 진행된다고 하여 aws ec2환경에서 구현해보았다. Github Action 테스트 먼저 테스트용 Github Action 파일을 작성하여 실행이 되는지 확인하였다. 확인 과정에서는 Ktlint를 이용하여 문법을 체크하도록 설정한다. 프로젝트에 ktlint plugin을 추가해준다. ↓ https://seosh817.tistory.com/154 [Kotlin/TDD] ktlint를 이용하여 코딩 컨벤션 맞추기 NextStep 이펙티브 코틀린 with TDD, Refactoring, Clean Code에서 배운 ktlint 설정 법을 정리해보고자 합니다. 린트 검사로 코드 개선..
-
코틀린에서 Data클래스에 JPA를 사용할 때 주의해야 할 점KOTLIN 2022. 11. 27. 14:27
코틀린의 data 클래스를 JPA와 함께 사용하려던 도중 몇가지 문제가 발생하여 알아보았다. 기본생성자 코틀린에서 data타입을 이용한 객체를 구현하여 JPA를 사용할 때 기본생성자를 작성해주어야한다. 이전 자바 공부할 때 배웠듯이 JPA의 경우 reflection을 이용해서 구현되기 때문에 기본생성자가 필수이다. @Entity data class Restaurant( @Id @GeneratedValue(strategy = GenerationType.AUTO) var id: Long? = null, @Column(unique = true, nullable = false) var name: String ) { constructor() : this(null, "") } 하지만 매번 기본생성자를 생성하기 위한..