이슈 모음 (1) - jpa와 aws

jinvicky·2024년 1월 3일
0
post-thumbnail

Intro


백엔드 코드와 aws 이슈들을 한번에 모아보자.
환경 : Spring Boot + Gradle + Windows 10 + Intellij

1. @RequestBody Long 처리

@RequestBody를 쓸 때 String으로 json을 받을 수는 있어도, long 또는 Long은 되지 않는다.

해결

Map<String, Long> 식으로 감싼다.

public void test(@RequestBody Map<String, Long> data) {}

요렇게 테스트하면 된다.

참고 https://togll.tistory.com/233

2. this.service is null

service 빈 주입을 잘못한 것이다. 내가 사용한 injection이 문법에 맞는지 확인할 필요가 있다. 보통 생성자 주입을 추천한다.

3. 404 No static resources for ~

정적 리소스 관련 설정인 건가? 헤맸는데 어이없는 어노테이션 문법 오타였다;;
내가 문법을 틀려서 얘가 다르게 인식한 듯하다.

@RequestMapping("/cms") //RestController 문법이랑 헷갈리지 않기;;

4. jpa 수정이 안된다;;

해결

@Transactional 어노테이션을 빼먹지 않았는지 체크한다.

 @Transactional
    public int toggleStatus (Long id) {
        try {
            CommissionDto dto = repository.findById(id).get();
            dto.setStatus(dto.getStatus().equals(GlobalCode.CMS_CLOSED.getCode())
                    ? GlobalCode.CMS_OPENED.getCode()
                    : GlobalCode.CMS_CLOSED.getCode()
            );
            return GlobalStatus.EXECUTE_SUCCESS.getStatus();
        } catch (Exception e) {
            return GlobalStatus.EXECUTE_FAILED.getStatus();
        }
}

entity의 변경을 감지해야 jpa가 업데이트를 해준다.

5. 갑자기 Mysql Timeout?

잘 나가다 갑자기 Mysql과의 연결이 끊기고, 부트 프로젝트도 관련해서 멈췄다.

해결

Aws Rds를 쓰는 사람이라면 vpc에 가서 처음에 설정했던 인바운드 규칙에 가서 허용자를 내 IP로 설정해주어야 한다.
나는 회사, 집, 본가에서 다 작업을 하기 때문에 결국 세 곳에서 모두 ip 주소를 추가해야 한다는 것이 된다;;

참고 https://velog.io/@hssarah/AWS-RDS-dBeaver-%EC%97%B0%EA%B2%B0-connection-timeout-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0

profile
Front-End와 Back-End 경험, 지식을 공유합니다.

0개의 댓글