목록Springboot (3)
Code in Life
개요 얼마전 코루틴과 @Transactional을 함께 사용했을 때 트랜잭션이 제대로 적용되지 않아서 당황했던 적이 있었는데요. 둘의 원리만 알고 있으면 쉽게 해결할 수 있었던 문제였지만 코루틴을 입문한 분들이라면 한번쯤 마주할뻔한 문제여서 이를 포스팅에서 다뤄보고자 합니다. 트랜잭션이 적용되지 않는 문제 마주했던 에러 문구입니다. 트랜잭션이 있어야할 곳에 트랜잭션이 없기 때문에 발생하고 있었습니다. Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query 해당 Exception이 발생한 지점을 찾아보니 update문을 실..
- @RequestParam : GET방식에서 사용하며, URL에 노출되는 쿼리 파라미터를 설정한다. required=false 설정을 하지 않으면 default가 true라서 요청 필드가 없으면 400 에러가 발생한다. httpServletRequest.getParameter()와 동일한 역할을 한다. - @PathVariable : 식별자를 URL에 설정할 수 있다. - @RequestBody : JSON, XML등의 데이터를 HttpMessageConverter를 통해 DTO에 바인딩해준다. form-data 방식은 받지못한다. Setter가 필요없다. - @ModelAttribute : 클라이언트가 전송한 여러 파라미터들을 1대 1로 바인딩하며, form-data를 받을 수 있다. 바인딩 대상으로..
Spring에서 제공하는 spring initializr(start.spring.io/)를 이용하면 매우 간단하게 초기세팅을 할 수 있다. ◆Project Maven과 Gradle중에 선택 가능하며, 입문자의 경우 Gradle을 추천한다. Maven의 경우는 일일히 버전에 맞게 신경써야하고, A 라이브러리와 B 라이브러리의 버전이 둘 다 최신이어도 호환이 안되는 경우가 종종 있다. 그럴 때 필요한건 닥 구글링뿐이지만, Gradle의 경우는 호환되는 버전을 알아서 세팅해준다. ◆Language 요건 생략 ◆Spring Boot 무조건 최신보다는 사용하려는 라이브러리를 지원하는지 어느정도 알아보고 고르는 것을 권장한다. 예를들어 테스트기법으로 자주 사용하는 JUnit의 경우, 2.2.x버전을 기점으로 JUn..