본문 바로가기

Back/Spring Boot13

컨트롤러에서 Enum 타입 @RequestParam @PathVariable로 매핑하기 상황 컨트롤러 단에서 Get Mapping 시, Enum 타입의 코드 값을 넘겨주고 받도록 코드를 구현했다. 그런데 해당 api 호출 시에 에러를 뱉었다. /api/enum-test?enumType=T 로 호출 시 에러 발생 (enum 타입의 코드 값으로 호출하면 에러 발생) /api/enum-test?enumType=TITLE 로 호출 시 정상 동작 도입 알고보니 @RequestParam @PathVariable를 통해 파라미터를 넘길 때 정수형 혹은 문자열 타입으로만 제한하여 사용할 수 있다고 한다. 따라서 Enum의 코드 타입을 변환시켜줄 수 있도록 별도의 구현이 필요하다. 일단 내가 작성한 코드를 살펴보자. ✏️EnumType.java @Getter @AllArgsConstructor public.. 2024. 4. 15.
@RequestBody DTO json데이터가 null일 때 문제 상황 ajax로 JSON 데이터를 BODY에 담아 POST API로 전달할 때, controller 단에 매핑하는 객체DTO의 값이 계속 null 인 상황이 발생했다. 넘겨줄 JSON 데이터 { "seq" : "1", "name" : "홍길동" } 받을 DTO 클래스 @Getter// lombok 사용 public class insertDto { private Long seq; private String name; } 위 코드를 확인해보아도, RequestBody 매핑하기 위한 규칙을 모두 지킨 것을 볼 수 있다. 1. 객체의 필드명과 Json 데이터의 이름이 동일하다. 2. Getter와 기본생성자가 DTO 클래스에 있다. 📣참고! Spring Boot가 JSON을 매핑하는 구현체로 Jackson.. 2024. 2. 7.
[SpringBoot] 외장 tomcat에 JNDI 설정 (+war) 상황 WAS에 데이터베이스 정보를 설정하고 연결하는 방식으로 개발해달라는 요청이 들어왔다. 이번 기회를 통해 tomcat에 JNDI 설정을 하는 방법을 정리해보았다. 실행환경 및 버전 OS : Ubuntu 20.04.3 LTS build tool : Gradle IDE : Intellij 유료버전 JDK : open JDK 11 Spring Boot : 2.7.9 Tomcat : 9.0.71 ✔️1. 먼저 external tomcat에서 war 로 빌드 가능한 환경 세팅하기 📌 이 게시글은 외장 톰캣에 war로 빌드하여 배포하는 환경이 갖추어져 있다는 전제하에 진행되므로, 아래 포스팅을 참고하여 미리 세팅이 갖추어져 있는지 확인 바란다. 2023.10.11 - [Back/Spring Boot] - [Sp.. 2023. 10. 23.
[SpringBoot] war로 배포하기, 외장 톰캣 구동 (+Trouble Shooting) 상황 SpringBoot의 경우 기본적으로 내장 tomcat을 지원하고 이는 jar 형식으로 배포해서 사용한다. 하지만 좀 더 세부적인 톰캣 모듈 설정이 필요하거나 고객사의 요청에 의해 war로 패키징 해야하는 경우도 있다. 내 상황도 고객사의 요청에 의해 jar 방식을 war 로 바꾸어야 했다. 하나씩 차근차근 해보며, 트러블 슈팅하는 과정도 정리해보려고 한다. 실행환경 및 버전 OS : Ubuntu 20.04.3 LTS build tool : Gradle IDE : Intellij 유료버전 JDK : open JDK 11 Spring Boot : 2.7.9 Tomcat : 9.0.71 (SpringBoot에 내장되어있는 톰캣과 버전을 맞춤, 내장톰캣 버전 확인방법은 아래 사진 참고) 적용 ✔️1. b.. 2023. 10. 11.
[Gradle] biuld.gradle 살펴보기 Gradle ??? 자바에서 외부 라이브러리를 가져다 쓴다는 의미는 결국 외부 라이브러리의 .jar를 가져와서 classpath에 추가하는 것이다. build.gradle이라는 파일에 가져다 쓸 라이브러리의 이름, 버전을 명시하면 gradle이 자동으로 jar파일을 다운 받고 추가해준다. 요약해서 말하면 gradle은 오픈소스 빌드 자동화 툴이다. 1. 구조 살펴보기 프로젝트 구조 사진 디렉토리 /파일 설명 /.gradle /gradle gradle 버전별 엔진 및 설정 파일 gradlew gradlew.bat gradle 명령 파일 setting.gradle 빌드할 프로젝트 정보 설정 builld.gradle 플젝트 빌드에 대한 모든 기능 정의 /src 자바 소스 파일 📌build.gradle이라는 파.. 2023. 9. 5.
[SpringBoot] @Valid 어노테이션으로 collection 객체 검증 문제상황 Controller에서 @RequestBody에 @Valid를 사용 할 경우, 단일 Object 타입일 때는 Validator가 잘 동작하지만, 객체가 Collection 타입으로 감싸져 있을 경우에는 Validator가 동작을 하지 못했다.(예외를 내뱉지 않음) 아래는 문제가 되는 예시 @PostMapping("") public Result doOrder(@RequestBody @Valid List order, Errors errors) { return orderService.doOrder(order); } 문제원인 에러가 나지 않는 이유는 @Valid는 JavaBeans에 적용되는데, List(컬렉션)는 JavaBeans 명세에 포함되지 않기 때문이다. 해결 Validation.buildDe.. 2023. 1. 30.