전체 글

전체 글

    Expected a key while parsing a block mapping

    에러 발생 상황 REST API를 구현하던 중 애플리케이션을 실행하니 Expected a key while parsing a block mapping 라는 오류가 났다. org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping in 'reader', line 1, column 1: spring: ^ expected , but found '' in 'reader', line 12, column 3: jpa: ^ 자세히는 이렇게. 문제 파악 spring: 이나 jpa:를 봐서 yml 파일의 문제인 것 같았다. 검색해보니 맞았다. application.yml 파일의 들여쓰기를 잘못해서 나는 오류라고 한다. 그래서 자세히 봤더니 sprin..

    순환 참조 오류, BeanCurrentlyInCreationException

    에러 발생 상황 책을 보면서 프로젝트를 진행하던 도중... 이 책이 꽤나 오래 전에 쓰인 책이라 버전 차이로 인해 deprecated 처리된 클래스나 메소드가 너무 많다는 걸 깨달았다... 그리고 그 절정에 다른 것은 OAuth2를 구현할 때였다... 굳이 1.5버전으로 했다가 버전업을 하기 싫어서 코드만 미리 작성해두고 2.0을 적용했는데 역시나 오류가 파바박 났다. 어찌저찌 deprecated 코드들을 구글링해서 변경하고 이 책을 최근에 참고한 사람들 코드를 참고하는 등 잡을 수 있는 오류는 다 잡았다고 생각했던 그때... 순환 참조 오류가 발생했다... 콘솔창에 뜨는 걸 보면 SecurityConfig 클래스가 문제인 듯한데 아무리 봐도 다른 클래스에서 이 클래스를 참조하고 있지 않았다. 솔직히 말..

    양방향 의존 관계 오류

    프로젝트 하면서 OAuth2 부분을 하는데 한참을 삽질하다가 겨우 해결되나 싶더니 양방향 의존 관계 오류가 발생했다. 솔직히 말하면 OAuth2가 너무 어렵고 코드를 제대로 이해하지 못해서 어디서 어디를 의존하는지를 이해하지 못해서 아직 손을 못 대는 중이다. 그러나 이와 관련해 검색하던 중 이럴 경우 어떻게 해결해야 하는지에 대한 답이 있어서 우선 기록을 남겨놓는다. 질문자는 이럴 경우 우선 @Autowired가 아닌 setter 주입으로 돌려서 임시방편으로 해결한다고 했다. 이럴 때 어떻게 해결하는 게 좋은 거냐는 질문에 대한 답이 아래이다. 결론부터 말씀드리면! 양방향 의존관계 오류는 거의 대부분 설계의 오류입니다. 양방향 의존관계는 매우 나쁜 설계로 볼 수 있습니다.(결국 A를 변경하면 B가 영향..

    DTO의 위치에 대해

    프로젝트를 진행하다 DTO를 만드려고 하는데 어느 위치에 만들면 좋을지 고민됐다. 나는 정확한 답을 모르면 엄청나게 망설이기 때문에... 검색을 많이 했는데 김영한님의 어느 강의 질문이 검색에 걸렸다. 사실 DTO의 위치라는 것은 패키지 설계를 어떻게 가져가는가에 따라 완전히 달라집니다. 예를 들어서 도메인에 포함 될 수 도 있고, 아니면 별도의 dto 패키지를 만들어서 공용으로 사용할 수 도 있습니다. 어떤 경우는 repository 계층에 있을 수도 있고, service 계층에 있을 수도 있습니다. 저는 어느 한 곳을 딱 정하기 보다는, 여러 패키지에서 공유해야 하는 상황이면 별도의 dto 패키지를 만들어서 넣어둡니다. 만약 특정 서비스 계층까지만 사용되면, 해당 서비스 계층에 dto클래스를 함께 둡..

    Unknown return value type [java.lang.Integer]

    에러 발생 상황 아이디 중복 체크를 구현하고 있는데 자꾸 IllegalArgumentException : Unknown return value type [java.lang.Integer] 이 발생했다. 문제 파악 어떤 글을 보고 따라하고 있었는데 그 글에는 컨트롤러에 @ResponsBody를 붙였는데 난 굳이 필요하지 않은 줄 알고 생략했다. 근데 예외 검색해보니 @ResponsBody를 안 붙여서 나는 오류라고 한다. 넘겨짚지 말기... @ResponseBody 서버에서 클라이언트로 응답 데이터를 전송하기 위해서 @ResponseBody 를 사용하여 HTTP 요청 본문에 담긴 값들을 자바 객체로 변환 시켜 객체에 저장 문제 해결 @PostMapping("/idCheck") @ResponseBody pu..

    경로에 관하여

    프로젝트 진행 도중 제대로 코드를 작성했다고 생각했는데 실행 결과 url이 내가 원하는대로 나오지 않는 경우가 있었다. 예를 들어 글 작성 후 redirect로 작성된 게시글의 글 조회 페이지로 이동해야 하는데 내가 원하는 url은 localhost:8080/board/{postNum} 이것인데 localhost:8080/board/board/{postNum} 이렇게 나오는 것이다. 당시 내가 작성했던 redirect 코드는 아래와 같았다. return "redirect:board/{postNum}"; 그리고 클래스 단위로 @RequestMapping이 "/board"로 되어 있었다. 강의를 들으면서 작성한 예제 코드를 참고하며 코드를 작성했는데, 분명 똑같이 한 거 같은데 왜 결과가 다르지? 하는 생각..

    인텔리제이 MySQL 연동 오류

    에러 발생 상황 인텔리제이와 MySQL을 연동하는데 뭔 오류가... 하... 연동부터 쉽지 않다... 먼저 build.gradle에 dependency를 다 추가해주고 application.properties에 유저, 패스워드 등등 다 입력 후 서버를 실행했더니 Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.d..

    FileNotFoundException

    에러 발생 상황 파일 업로드 강의 실습 중 실제 경로에 파일을 저장하는 부분을 하고 있는데 FileNotFoundException이 발생했다. 문제 파악 강사님이 쓰는 건 맥이고 나는 윈도우라 경로가 조금 달라서 불안했는데 결국 내가 잘못 쓴 듯. 커뮤니티 확인해보니 글이 있었다. 아무래도 application.properties에 경로 설정을 잘못한 것 같았다. 문제 해결 file.dir=Users/계정명/Desktop/projects/file/ 원래 내가 설정했던 경로는 이거였다. 글을 보니 C:/부터 시작하길래 file.dir=C:/Users/계정명/Desktop/projects/file/ 으로 고쳤더니 경로에 파일이 정상적으로 저장됐다.