spring 5

[에러해결] Unexpected error occurred in scheduled task

Unexpected error occurred in scheduled task org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only 기존에 스프링부트 + JPA 를 사용해서 백엔드를 구축 중이었당 이번에 주기적인 알람 기능을 구현하면서 @Scheduled 어노테이션을 사용하게 되었고 자연스럽게 @Transactional 어노테이션이 붙어있던 트랜잭션에 @Scheduled 어노테이션을 붙여서 사용하게 되었다 그러나 Unexpected error occurred in scheduled task 에러 발생.. 구글링을 ..

error 2022.09.13

Read-Only 함수에 @Transactional 을 붙여야 하는가?

스프링부트 + JPA 를 쓰다보면 @Transactional 어노테이션을 자주 사용하게 된다 어떠한 로직이 동작하면서 DB 값도 바꿔야 하는 상황일때 해당 로직이 실패하면 DB까지 모두 롤백시킬 심산으로 @Transactional 어노테이션을 활용하고는 했다 그런데 어느날 내가 Transactional 어노테이션을 남용하고 있는건 아닐까..? @Transactional(readOnly = true) 어차피 읽기만 할건데.. 롤백 될일도 없는데.. 이 코드가 과연 맞나..? 싶은 의문이 든다.. 두둥 알고보니 Spring JPA repository base class 가 애초에 모든 메소드들을 read-only transaction 으로 생각한다고 한다 저 코드는 필요 없는것! JPA Buddy 그리고 J..

Backend 2022.09.13

[에러해결] A component required a bean named 'redisTemplate' that could not be found.

현재 상황 한개의 spring boot 에 두개의 redis를 연결해야 하는 상황 기존 코드는 한개의 redis 만 연결해 두었으나 변경하게 되면서, config/하위 폴더에 RedisDevConfig RedisRealConfig 이렇게 두개의 Config 를 만들어두게 되었다 @Bean(name = ["devRedisConnectionFactory"]) @Qualifier("devRedisConnectionFactory") redisConnectionFactory: RedisConnectionFactory이렇게 Bean 이름을 각각 명시해주고, Qualifier 로 해당 이름의 빈을 가져와서 쓰면 될것이라고 생각했다. 오류 발생 org.springframework.beans.factory.NoSuchB..

error 2021.05.06

👩🏻‍💻신입사원의 레거시 코드 뽀개기

신입사원은 레거시 코드를 받았고 뽀개려 합니다 💼 새로운 부서 새로운 일 2020년 3월, 드디어 정직원으로서의 첫 부서를 배치받았다. 네이버 지도를 서비스하는 팀에 들어와서 초반 1주차는 지도, 좌표계에 관련된 여러 자료들을 살펴보고 도메인 지식을 쌓는데에 주력했다. 새로운 팀, 새로운 업무를 맡게 되니 당연스레 레거시 코드를 인수인계 받았다. 난생 처음 레거시 코드를 받고보니 어디서부터 살펴보아야 하는가, 이걸 내가 다 볼 수 있을까?, 어떻게 봐야 다 봤다고 할 수 있을까 등등 많은 생각이 들었다. (난생 처음 재택근무도 하고 있다 COVID-19😷) 🗂 부여받은 업무 내가 부여받은 업무는 퇴사자 분이 인수인계 해주신 업무를 (java, spring boot로 된 API) kotlin으로 리팩토링하..

Backend 2020.04.03

[에러 해결] Caused by: java.net.BindException: Address already in use

😩 에러 발생 spring-boot 프로젝트를 여느때와 다름없이 intelliJ에서 실행시켰더니 갑자기 아래와 같은 오류들이 발생하며 실행이 안되었다….🤦🏻‍♀️ Caused by: java.net.BindException: Address already in use Execution failed for task ':Application.main()'. > Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 Caused by: org.apache.catalina.LifecycleExce..

error 2020.04.02