본문 바로가기

spring boot

(16)
springbootTest에서 session 이용하기 세션값을 가져오는 코드가 매번 반복되기 때문에 이를 어노테이션 기반으로 개선했는데, 이로인해 테스트시 NullPointException 에러가 발생했다. @ResponseBody @PostMapping("/goals") public Long save(@RequestBody GoalsSaveRequestDto requestDto, @LoginUser SessionUser user //메소드 인자로 세션값 바로 받기) { return goalsService.save(requestDto, user.getId()); } @LoginUser 라는 어노테이션을 생성해서 session의 user값을 가져와 SessionUser 클래스에 담아 전달하는 형태인데, 테스트에선 세션값이 없으니 계속 오류가 발생했다.(자세한..
코프링 @Validated + @RestControllerAdvice 이용해서 파라미터 null check 하기 1. build.gradle 에 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' 2.컨트롤러 메소드의 검하고자 하는 파라미터 앞에 @Validated 붙여주기 3. 검사하고자 하는 dto에 @field: NotNull 붙여주기 주의할 점 import 할 때 jakarta.validation.constraints.NotNull​ 위의 경로로 해줘야함 org.jetbrains.annotations 이 경로도 뜨는데 이걸로 하니 어째선가 안됨,, @field: 의 경우 코틀린일 때만 필수 4. @RestControllerAdvice 생성 @RequestBody에서 발생한 오류는 MethodArgumentNotVali..
the apache tomcat native library could not be found using names [tcnative-2, libtcnative-2, tcnative-1, libtcnative-1] 대충 내장 톰캣이 라이브러리를 못 찾는다는 내용인데, https://tomcat.apache.org/download-native.cgi 1. 여기 주소로 들어가서 화면 젤 아랫단에 Standard zip - recommended(PGP, SHA512)를 다운받고 Apache Tomcat® - Tomcat Native Downloads Welcome to the Apache Tomcat® Native software download page. This page provides download links for obtaining the latest version of Tomcat Native software, as well as links to the archives of older releases. Onl..
ssh로 서버에 접속해서 jar 파일 배포하기 대충 생각나는 대로 적어보자면... 인텔리제이에서 그레이들 빌드 후 jar 파일을 생성했고, 파일질라를 이용해서 배포 서버에 전송했다. 그리고 ssh로 서버에 접속해서 배포를 한거같은데..시키는 대로 하니 되긴 됐는데 뭐가 뭔지 어리둥절하다. 1. jar파일이란 뭔가? JAR (Java Archive) JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일 Class (JAVA리소스, 속성 파일), 라이브러리 파일을 포함함 JRE(JAVA Runtime Environment)만 있어도 실행 가능함 (java -jar 프로젝트네임.jar) 검색해 보니 꼭 jar 파일로만 배포하는게 아니라 war 파일로 배포하는 경우도 있다. 2. 그럼 war는 뭔가? WAR (Web Application A..
No primary or default constructor found for interface java.util.List api 테스트 중 발생한 오류 contentType을 json으로 받는다고 해놓고 @RequestBody 어노테이션을 안붙여서 생긴 문제였다 참고: https://stackoverflow.com/questions/54663351/no-primary-or-default-constructor-found-for-interface-java-util-list-rest-api-sp No primary or default constructor found for interface java.util.List Rest API Spring boot I am passing a request body to a POST request on postman similar to this: "name":"Mars", "artifacts..
Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test @SpringBootApplication 이 어노테이션은 스프링 부트의 자동 설정을 읽는 + bean을 생성하고 읽는 어노테이션이기 때문에 가장 상위 패키지에 존재해야 한다. 제목의 오류는 테스트하려는 클래스가 위의 어노테이션이 붙은 패키지의 하위에 있지 않아 읽을 수 없을 때 발생하는 오류인데, 내 프로젝트는 분명 저 어노테이션이 붙어있는 Application 클래스의 하위에 잘 넣어두었는데도 오류가 났다. 찾아보니 앞에 생략된 패키지들 때문에 구조가 다르게 되어서 그런거였다. com.odog.www.web이 되야하는데 www.web만 존재해서 생긴 오류 https://stackoverflow.com/questions/47487609/unable-to-find-a-springbootconfigurati..