Spring boot

· Spring boot
상황 MockMvc 를 써서 테스트하려면 403 이 발생하는 이슈를 csrf 토큰을 붙여 보내는 방법으로 해결한다. 근데 이 토큰이 request parameter 로 붙어서 가고, rest docs 사용 시 이 항목이 문서화가 안되었다면서 아래와 같은 에러가 난다 Request parameters with the following names were not documented: [_csrf] 파악 테스트 시 csrf 를 해제하는 방법은 못찾겠다 보내는 방법을 바꿔보았다 해결 이런식으로 csrf 를 request param이 아닌 header 에 들어가도록 설정해주면 에러가 더이상 나지 않는다 //then MockHttpServletRequestBuilder requestPost = post("/api/..
· Spring boot
상황 @RequestBody 를 가진 POST 요청에 대해서만 계속 400 응답이 온다 파악 ERROR 가 아닌 WARN 단계로 로그가 찍혀서 계속 못보고 지나쳤는데 잘 봐야 한다.. 에러 메세지 : HttpMessageNotReadableException: JSON parse error: Cannot construct instance of ... Spring 은 요청의 직렬화/역직렬화에 Jackson 이라는 라이브러리를 사용하고, Jackson 은 생성자를 반드시 필요로 한다. 해결 그런데 나는 DTO 클래스에 @Data 와 @Builder 만 달고 사용중이었다. (@Builder 는 생성자를 생성해주지 않음) 직전 프로젝트에서 잘 됐던 코드랑 비교했었는데 그때도 이렇게 잘 썼어서 문제가 없는 줄 알았..
· Spring boot
상황 로컬에서 실행 시에는 잘 실행됨 배포하니 jenkins로 자동 빌드되는 과정에서 빌드 fail됨 빌드 시 테스트 코드가 실패했다고 확인됨 파악 로컬에서 ./gradlew clean build 로 빌드해보니 에러 발생 (-> 항상 배포 전 미리 빌드해보고 올렸어야 함) 여기서 보이는 로그로는 해결하기 부족해서 ./gradlew test -i 로 테스트 시 발생하는 에러 로그 전체 출력해봄 역시나 안보이던 로그에 쉬운 단서가 있었음! 테스트코드 실행 시 어떤 repository 빈을 못찾았다고 되어있었는데 @WebMvcTest 어노테이션에 특정 컨트롤러를 지정하지 않고 사용했더니 모든 컨트롤러를 다 로드하느라 모든 컨트롤러에서 사용하는 빈을 찾아 넣으려고 했나봄 해결 @WebMvcTest 에 이 테스트..
· Spring boot
문제 소켓을 연결해서 web socket 통신 중인 클라이언트가 http 로도 해결 가능한 요청을 할 일이 생기는 경우 (실시간, 양방향 필요없음) 이 요청은 이미 연결되어있는 소켓을 사용해서 ws로 설계하는 게 맞을까? 아니면 http 로 설계하는 게 맞을까? 결론 : http 로 설계하는 것이 좋다 소켓으로도 가능은 하지만 http로 하는 이유는 필요가 없음 : web socket 의 용도는 실시간성 데이터를 받기 위한 것인데 해당 api는 실시간 통신이 필요하지 않은 것이므로 코드 재사용성과 모듈화, 유지보수성 : 나중에 그 api가 다른 곳에서 사용될 수도 있음. 따라서 기능의 성격에 맞게 설계하는 것이 더 적절함 서버 부담에 대해 : 이런 상황이라면 부담만 본다면 웹소켓 통신을 하는 게 부담이 ..
· Spring boot
Spring Boot 에서 JPA를 사용해서 자동을 테이블을 생성하기 위해 create-drop 을 사용했다 에러 o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL "..." org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "..." 원인 여러가지 원인이 있다고 나왔는데 나 같은 경우에는 Entity를 구성하는 코드 중에 SQL 예약어가 있었다 최신 날짜를 의미하려고 update라는 컬럼을 사용하려고 했다; ㅋㅋㅋㅋ 어쩐지 다른 테이블들은 잘 생성되는데 한..
· Spring boot
[Spring] 스프링 부트 첫걸음 3 : REST API에 데이터베이스 연동 (MySQL, MyBatis) ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. 이전글과 이어집니다. [Spring] 스프링 부트 첫걸음 : Android앱 REST API 서버 만들기 2 (POST, PUT, DELETE 요청, @RequestParam, Postman) [Spring] 스프링 부트 첫걸음 : Android앱 REST API 서버 만들기 2 (PUT요청, @RequestParam, Postman) ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. 이전글과 이어집.. onedaythreecoding.tistory.com 이전글에서 get, post, put,..
· Spring boot
[Spring] 스프링 부트 첫걸음 2 : Android앱 REST API 서버 만들기 2 (PUT요청, @RequestParam, Postman) ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. 이전글과 이어집니다. [Spring] 스프링 부트 첫걸음 : Android앱 REST API 서버 만들기 1 ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. IDE 준비 Eclipse STS : Sping.io 사이트에서 Projects > Spring Tools 4 다운받아 설치(https://spring.io/tools) Spring Tools 4 is.. onedaythreecoding.tistory.com 이전글에서 GET으로 데이터 조회기능을 만..
· Spring boot
[Spring] 스프링 부트 첫걸음 1 : Android앱 REST API 서버 만들기 1 (GET요청, @PathVariable) ** 해당 글은 하단 참고란의 영상을 보고 따라서 공부하며 기록한 글입니다. IDE 준비 Eclipse : 나는 설치되어있음 STS : Sping.io 사이트에서 Projects > Spring Tools 4 다운받아 설치(https://spring.io/tools) Spring Tools 4 is the next generation of Spring tooling Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise appli..
돌래씨
'Spring boot' 카테고리의 글 목록