JPA 37

[4강] 스프링 시큐리티 로그인 구현 - '?error' 발생

🏕️상황 강의를 따라 하던 중에 회원가입은 정상적으로 작동했으나 '로그인'에서 로그인이 되지 않고 아래의 사진처럼 오류가 발생했다. 미쳐버릴 지경이었다. 콘솔에는 아무런 오류도 찍히지 않고, 심지어 두 번째 사진처럼 사용자 정보도 굉장히 잘 찾아지는데 왜 로그인만 안 되는지 답답하고, 막막했다. 진짜로 두 번째 사진처럼 콘솔에는 아무런 오류도 없었다. 💦과정 1. 관련이 있는 클래스들을 돌아다니며 코드를 수정해보았지만 무용지물.... 2. WebSecurityConfigurerAdapter의 deprecated로 인한 코드 수정.... 강의에서는 WebSecurityConfigurerAdapter를 사용하여 코드상에 해당 부분에 줄이 그어져 있는(deprecated) 상황이었다. 그래서 검색해보니 인프런..

[3강][4강] spring security 회원가입/로그인

[3강] @Autowired private UserRepository userRepository; @PostMapping({"/join"}) //securityConfig 파일 생성 후 작동안함. public String join(User user) { System.out.println(user); user.setRole("ROLE_USER"); String rowPassword = user.getPassword(); String encPassword = bCryptPasswordEncoder.encode(rowPassword); user.setPassword(encPassword); userRepository.save(user); return "redirect:/loginForm"; } 위의 과정은 로..

🚨ERROR -[aws] org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Null key for a Map not allowed in JSON

🏕️상황 학교 상세보기 페이지에 들어가면 커리큘럼을 확인할 수 있도록 하는 기능을 구현하는 과정 중이었다. 분명히 로컬에서 기능이 문제없이 잘 돌아가는 것을 확인을 한 후에 aws서버에 올리고, db에 데이터를 insert 하고 나서 실행을 시키니 아래와 같은 오류가 프로젝트 실행 중에 발생하였다. 환장할 노릇이었다. 왜 로컬에서는 잘 되는데 여기서는 이런 오류가 발생하는 것인지 Completed initialization in 3 ms 2023-09-13 04:04:53.035 WARN 325428 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpM..

🚨ERROR - [spring boot] java.lang.NullPointerException : null

🏕️상황 오류 화면을 보면 알겠지만 Controller에서 null 오류가 발생했다. 눈을 씻고 찾아봐도 코드상에 문제가 전혀 없었고, 심지어 복잡한 코드도 아니었음. 🗝️해결 위처럼 컨트롤러 필드에다가 저렇게 static을 사용해서 의존성 주입을 해버린 것이다.... 왜 사용하면 안 되느냐? 멀티스레딩 문제: static 필드는 클래스 수준에서 공유되므로 여러 스레드에서 동시에 접근할 수 있습니다. 웹 애플리케이션은 다수의 요청을 동시에 처리하는 환경에서 동작하므로 멀티스레딩 문제가 발생할 수 있습니다. 이로 인해 데이터 일관성 문제나 경합 상태 등이 발생할 수 있습니다. 의존성 주입(Dependency Injection) 문제: Spring과 같은 프레임워크에서는 의존성 주입(DI)을 통해 필드를 주..

🚨ERROR - org.springframework.core.convert.ConverterNotFoundException

🏕️상황 ConverterNotFoundException: No converter found capable of converting from type [hanium.highwayspring.school.Curriculum.Curriculum] to type [java.lang.String]] with root cause org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [hanium.highwayspring.school.Curriculum.Curriculum] to type [java.lang.String] at org.springframework.core..

[aws] com.amazonaws.services.s3.model.AmazonS3Exception:

🏕️상황 프런트 팀원이 해당 사진을 보내주면서 imageurl이 반환이 안 된다고 했다. (맥북에서 캡처를 하니 저렇게 이름이 길어졌다고 했다.) 평상시랑 다른 점(내가 테스트했을 때와 다른 점)이라고 한다면 파일의 이름이 지나치게 길다는 것이다. 그래서 aws 인스턴스에 실행중인 프로젝트의 로그를 확인해 보니 오류가 발생하고 있었다. com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID: --이 부분은 혹시 몰라 삭제--; S3 Extended Request ID: --이 부분..

[aws] ec2 build - 오류 100개 발생 (⭐중요한 팁 포함)

🏕️상황로컬에서 프로젝트 빌드, 컴파일 시에 전혀 오류가 없었다.로컬에서 각 기능들이 너무나 잘 돌아가는 것을 확인하였다.그 상태로 깃허브에 올리고 ec2에서 git pull 받고 빌드를 시키니 오류가 아래와 같이 100개가 나왔다 :) 💦과정이전 블로그에 올렸듯이 dev와 main 브랜치를 합치는 과정에서 많은 오류를 마주치고 해결하는 바람에 깃허브에 올린 코드가 아래의 사진처럼 2개씩 생긴 폴더나 파일이 있었다. (같은 폴더인데 구버전 : dto, 신버전 : DTO) 그래서 기뻤다. 왜냐? 이걸 고치면 오류가 100개씩이나 생기지 않을 것이라고 생각했다. 하지만 고쳐서 수정해도 달라지는 것은 없었다ㅎㅎ   🗝️해결오류가 100개가 아니라 10개라면 일일이 고칠 테지만 100개를 하나하나 고치는 ..

[spring boot] branch merge시 대충돌

🏕️상황 dev 브랜치의 내용을 main 브랜치에 rebase를 하고 싶었는데 나의 착각으로 인해서 merge를 하게 되었다. 그런데 두 브랜치를 merge 한 지 꽤 되어서 충돌이 굉장히 많이 일어났다. 저 사진에 빨간 부분이 다 오류가 발생한 부분.... 🗝️과정 / 해결 일단 화면에 와 같은 충돌 마커를 다 제거하고, 충돌된 부분을 해결해도 빨간색이 사라지지 않는 클래스도 있었고.... 충돌 해결후에 git add 을 실행해도 unmerged 상태에서 statged 영역으로 내려가지 않고 계`~속 그 상태에 있는 파일이 있기도 했다. 🔜 그래서 일단 마지막까지 해결되지 않은 파일들은 지우고 나서 문제를 해결한 뒤에 다시 생성하기도 하고, 인터넷에서 보이는 것들을 여러 가지 시도하기도 하였다. 중간에..

[spring boot] S3 게시판(이미지 처리) update 기능 완성

🏕️상황 꽤나 긴 시간 동안 굉장히 여러 상황을 마주해서 하나하나 기억은 안 나지만 그래도 기억나는 거라도 작성해보록 하겠음. public void updateImages(List newImageList, List existingImageList) { // 새로 추가된 이미지 찾기 List addedImages = new ArrayList(newImageList); addedImages.removeAll(existingImageList); // 삭제된 이미지 찾기 List deletedImages = new ArrayList(existingImageList); deletedImages.removeAll(newImageList); // 새 이미지 업로드 로직 for (String newImage : add..

[spring boot] S3 게시판(이미지 처리) delete 기능 완성

🏕️상황 처음에는 아래의 코드만 있으면 바로 삭제가 될 줄 알았다. public void deleteFile(String fileName) { DeleteObjectRequest request = new DeleteObjectRequest(bucket, fileName); amazonS3Client.deleteObject(request); } 그런데 나는 기존에 임시경로는 "temporary/"로 정식경로는 "final/"로 설정했기 때문에 이에 맞게 코드를 구성하려고 했다. 위의 코드는 루트 디렉터리 기준이고 나는 키(key) 구조를 활용해서 폴더 같은 형식으로 진행하고 싶었기 때문에 추가적인 코드 작업을 할 계획이었다. 하지만.... Amazon S3에서는 특정 폴더 내에 있는 파일을 삭제하기 위해 ..