분류 전체보기 119

list null(empty)체크하기

🏕️상황 list형인 변수 imageList에 아무런 값이 들어있지 않다면 해당 메서드가 실행되면 안 되는데 저렇게 조건을 2개나 걸었는데도 계~~ 속 메서드가 실행되는 것이다..? 그래서 다른 방법을 모색해 보았다. 🚋과정 list에서 null을 체크하는 방법으로는 대충 3가지가 있다고 한다. list.isEmpty() list.size() CollectionUtiles.isEmpty() 근데 모두 upload 메소드가 실행되었다.... 🗝️해결 자세히 알아보니 post men에서 아무런 값을 전달하지 않으면 null 값이 아니라 empty라고 한다. imageList 변수는 초기화 시점에 이미 빈 리스트로 생성되었기 때문에 null이 아닌 비어있는 리스트가 된다. 그래서 나의 경우에는 != null ..

[Spring boot] s3 이미지 업로드 구현(완성)

https://grogrammer.tistory.com/66 Spring boot_s3 이미지 업로드 구현(초안) 🏕️기존 상황 이미 S3 버킷은 만들어져 있는 상황이었고 모든 권한을 가진 iam 유저도 1명 있는 상태였다. 그 상황에서 더 추가적으로 필요한 것들을 추가해서 개발하였다. 🔺S3연동을 위해 해 grogrammer.tistory.com 🏕️상황 위에 있는 블로그에 쓰여있듯이 지난번에는 이미지가 S3 버킷에 잘 올라가는지 확인하는 용도였다. (아직 남은 개발 사항이 있는 상태) 현재 우리 프로젝트에서 이미지를 다루는 부분은 게시판 부분인데, 게시판 쪽 코드와 합쳐서 게시글과 이미지가 하나가 되도록 만들어야 했다. 🔜 현재 완료 이미지 1개만 업로드가 가능했는데 다중 이미지 업로드 기능을 구현해..

🤦🏻‍♀️고민하기 - 어떤 Join 메소드를 사용해야 할까?

🏕️상황 Querydsl을 사용하다 보니 각종 Join이라고 적혀있는 메서드가 많아서 각자 정확히 어떤 기능을 하고, 어떤 상황에 무엇을 사용해야 하는지 궁금해졌다. 그리고 명확히 알아야 할 필요가 있다는 생각이 들었다. innerJoin() 메서드 innerJoin은 두 개의 테이블을 내부 조인하는 방식. 내부 조인은 두 테이블 간에 조인 조건을 만족하는 데이터만 결과에 포함시키는 방식입니다. 만약 조인 조건을 만족하지 않는 데이터는 결과에 포함되지 않는다. 예를 들어, qBoard와 qHeart 테이블을 innerJoin하여 qBoard의 id 컬럼과 qHeart의 board.id 컬럼이 매칭되는 데이터만 결과로 가져오게 된다. innerJoin은 두 테이블 간에 반드시 관계가 존재해야 하며, 매칭되..

@PathVariable, @RequestParam의 차이점

🏕️상황 @GetMapping("/list/{schId}") public ResponseDTO boardList(@PathVariable("schId") Long schId, @RequestParam(name = "cateNo") Long cateNo) 다음과 같은 코드가 있을 때, URL 경로에는 cateNo라는 값이 없는데 왜 매개변수에는 있는지 의아했다. 🗝️해결 @PathVariable("schId") Long schId: @PathVariable은 URL 경로에서 특정 변수를 추출하는데 사용된다. schId라는 변수명으로 URL 경로에서 값을 추출하여 Long 데이터 타입으로 매핑하게 된다. 예를 들어, URL 경로가 "/schedule/123"인 경우, schId 변수에는 123이 할당된다. ..

🚨ERROR - com.amazonaws.SdkClientException: Failed to connect to service endpoint:

🏕️상황 2023-07-25 10:31:09.949 WARN 156 --- [ main] com.amazonaws.util.EC2MetadataUtils : Unable to retrieve the requested metadata (/latest/meta-data/instance-id). Failed to connect to service endpoint: com.amazonaws.SdkClientException: Failed to connect to service endpoint: at com.amazonaws.internal.EC2ResourceFetcher.doReadResource(EC2ResourceFetcher.java:100) ~[aws-java-sdk-core-1.11.792.jar:n..

[개발]🚨ERROR - com.amazonaws.services.s3.model.AmazonS3Exception: The bucket does not allow ACLs

🏕️상황 2023-07-25 13:19:52.009 ERROR 19808 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.amazonaws.services.s3.model.AmazonS3Exception: The bucket does not allow ACLs (Service: Amazon S3; Status Code: 400; Error Code: AccessControlListNotSupp..

[Spring boot] s3 이미지 업로드 구현(초안)

🏕️기존 상황 이미 S3 버킷은 만들어져 있는 상황이었고 모든 권한을 가진 iam 유저도 1명 있는 상태였다. 그 상황에서 더 추가적으로 필요한 것들을 추가해서 개발하였다. 🔺S3연동을 위해 해당 권한만 별도로 가진 유저를 생성 노란색 박스처럼 S3 권한을 가진 전용 iam 유저를 [highWay_S3_user]라는 이름으로 생성. 핑크색 박스의 권한을 부여하여 유저를 생성. (S3에 대한 전체 권한을 허용하는 것이기 때문에 추후 더 보안에 신경 쓸 수 있는 권한을 도입예정) 🔺build.gradle //aws implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' 🔺application.properties # S..

[개발] S3_accessKey, secretKey 발급받기기(문제/해결)

🏕️상황 S3에 이미지를 업로드하는 코드를 만들기 위해서 밑작업으로 application/properties에 accessKey, secretKey 값을 입력해야 하는데 그 값이 어디에 있는지 몰랐다. 그래서 검색해 보니 'aws access key 재발급'라고 검색해도 하나같이 새로운 유저를 생성하면서 그 과정 속에서 위의 값들을 얻는 구조였다. 하지만 우리 프로젝트 계정에는 이미 iam 유저가 1개 존재했다. aws 왕초보이다 보니 이것저것 막 건들이기가 무서웠고, 이미 유저가 1개 있는 상태에서 또 유저를 생성해도 되는지 고민이 되었다. 그래서 한이음 멘토님께 연락을 드려 여쭤보았다. ⛅과정 아래의 사진처럼 이 부분을 선택해서 iam 유저를 생성해야 하는데 이게 안 보이더라!! 이 페이지 (1페이지..

[3장] "더 추상화 되어 사용된다"의 의미는?

🏕️상황 영속성 컨텍스트에 대해 공부하다 보니 '.persist()' 메소드에 대해서 알게 되었고 이 메소드는 "엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다." 라고 했다. 그런데 [저장]이라는 말을 보니 '.save()' 메소드와의 차이점이 무엇인지 궁금해졌다. 그래서 알아보니 간단하게 설명하자면 '.save() 메소드는 JPA에서 사용되는 em.persist()와 비슷한 역할을 수행하지만, 더 추상화되어 사용함.' 위에서 말하는 "더 추상화되어 사용" 한다는 말이 무슨 말일지 궁금해졌다. 🗝️해결 "더 추상화되어 사용된다"는 말은 개발자가 직접 구체적인 구현을 다루지 않고, 더 간단하고 추상화된 방식으로 사용할 수 있다는 것을 의미한다.