본문 바로가기

개발64

[Spring] consumes 사용하기 프로젝트를 진행하면서 JSON 데이터와 MultipartFile을 한번에 저장하고 싶어 적용해보았다. 우선 consumes는 @RequestMapping의 수신, 출력하고자 하는 데이터 포맷을 정의할 수 있다. JSON, MultiPartFile을 한번에 받고 싶을때는 consumes를 사용하지 그러지 않을 시 415에러 Unsupported Media Typ를 만날 수 있가. (+ 요청/응답의 매개변수의 설정이 잘못됐을때 주로 발생한다.) 2022. 11. 22.
RequestBody, RequestPart, RequestParam, ModelAttribute RequestPart, Body를 위해서 한번 더 정리한다. RequestBody Http 요청은 body가 그대로 넘어온다. 이 body 내용을 HttpMessageConverter로 보내거 자바 객체로 변환하여 메소드 파라미터로 전달해준다. Http 요청으로 같이 넘어오는 Header의 Content-type을 참고하여 어떤 Converter을 사용할지 정한다. 주로 JSON을 받는데 사용한다. RequestPart Content-type이 multipart/form-data와 관련된 경우 사용한다. 흔히 이미지를 저장하는 상황에서 주로 사용한다. RequestParam 1개의 파라미터를 넘겨받을 때 사용한다. required default true인 만큼 신중히 사용하자. ModelAttribute.. 2022. 11. 22.
Spring Boot로 이미지 첨부 가능 게시판 구현 이미지 첨부가 가능한 게시글, 게시판을 만들면서 정리하는 내용이다. Spring Boot + Gradle + JPA로 구현했다. application.yml 설정 servlet: multipart: enabled: true location: //저장하고 싶은 위치 max-request-size: 30MB max-file-size: 10MB enabled : 파일 업로드 가능 여부 location :업로드된 파일의 임시 저장 경로 max-request-size :한 번에 최대 업로드 가능 용량 max-file-size :파일 하나의 최대 크기 Entity [BOARD, IMAGES] Controller Service Postman Test File https://winter1396love.tistory.c.. 2022. 11. 22.
Spring Boot + Gradle에서 사용할 querydsl 초기 셋팅 언제나 maven으로 진행했던 프로젝트... pom 설정은 익숙하지만 Gradle로 셋팅하는건 어색해서 게시글로 남겨본다. plugins { id 'org.springframework.boot' version '2.7.5' id 'io.spring.dependency-management' version '1.0.15.RELEASE' id 'java' } group = 'com.todo' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementati.. 2022. 11. 18.
Serializable를 사용하는것인가? 스터디를 진행하면서 갑자기 Serializable가 생각났다. 현재 프로젝트에는 implements Serializable를 진행하고 있지 않다. 하지만 이전 회사에서 한번 사용했던 기억이 있었기에 언제 사용하고 언제 사용안하는지에 대해서 궁금증이 생겼다. 우선 Serializable은 직렬화로 해석된다. JPA 표준에서는 Entity class는 Serializable를 반드시 implements 할 것을 요구한다. JPA를 사용하면서 Serializable를 사용하는 경우는 domain 객체를 DTO, VO를 생성하지 않고 보낼대 implements를 진행한다. Serializable를 상속 받아 caching/optimization을 목적으로 HttpSession 값을 저장할 수 있다고 한다. ht.. 2022. 11. 16.
JPA + Postgres 사용시 주의할 @Lob 프로젝트로 Entity 작성시 평소와 같이 @Lob를 사용하고 있었다. Postman을 통해서 등록 메소드를 테스트 하는 상황에서 문제가 발생했다. title, contents의 값이 의도와 다르게 contents에 이상한 숫자가 들어간 상황이다.... 왜지...? 왜지...? 처음에는 request model에 담기면서 값이 달라지나? 라고 생각했지만 아닌것을 확인 자세히 기억해보면 그동안 JPA를 사용하면서 이용했던 DB는 h2 mysql 정도라는 것을 기억해냈다. 지금 Postgres를 사용하면서 이런 문제가 생긴것을 생각하고 알아봤다. 결론은 @Lob말고 @Column(nullable = false, columnDefinition="TEXT") 으로 변경하면 TEXT가 들어가는 것을 확인할 수 있.. 2022. 11. 15.