문제인식
프로젝트 좋아요 기능을 구현하던 도중에 빈을 생성할 수 없다는 에러가 발생하였다.

Try
어노테이션이 잘 달려있는지 확인했으나 어노테이션은 빠진것 없이 잘 달려있었다.
좋아요 기능의 코드 문제인 줄 알고 좋아요 기능 구현해놓은것을 주석처리 할 수 시도해보았으나 똑같은 오류가 발생하였다.
컨트롤러부터 서비스까지 하나하나 확인하며 오타가 없는지 확인하였다. 한참 찾았음에도 발견을 할 수 없었다.
최후의 방법으로 다른 사람에게 에러의 원인을 함께 봐달라고 부탁하였다.
문제해결
에러코드 분석 :
에러코드 :
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'likeController' defined in file [C:\Users\user\Documents\Sparta-codingClub\spartaCamp\myblog\dailyblog\build\classes\java\main\com\example\dailyblog\controller\LikeController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'likeService' defined in file [C:\Users\user\Documents\Sparta-codingClub\spartaCamp\myblog\dailyblog\build\classes\java\main\com\example\dailyblog\service\LikeService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'postLikeRepository' defined in com.example.dailyblog.repository.PostLikeRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.Optional com.example.dailyblog.repository.PostLikeRepository.findByUsername(java.lang.String); Reason: Failed to create query for method public abstract java.util.Optional com.example.dailyblog.repository.PostLikeRepository.findByUsername(java.lang.String)! No property 'username' found for type 'PostLikes' Did you mean ''userName''; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional com.example.dailyblog.repository.PostLikeRepository.findByUsername(java.lang.String)! No property 'username' found for type 'PostLikes' Did you mean ''userName''
에러코드 해석:
Error creating bean with name 'likeController' defined in file : 컨트롤러의 빈을 만들 수 없다 파일을 찾을 수 없다~~
Error creating bean with name 'likeService' defined in file : 서비스에 빈을 만들 수 없다~ 파일을 찾을 수 없다~~
Error creating bean with name 'postLikeRepository' defined in com.example.dailyblog.repository. : com.example.dailyblog.repository 경로안에 postLikeRepository 이름의 빈을 만들 수 없다~~
Could not create query : 쿼리를 만들 수 없다~~ PostLikeRepository.findByUsername(java.lang.String) : 이 뭐리를~~
Failed to create query for method : 메서드의 쿼리 만드는것을 실패했다~~
PostLikeRepository.findByUsername(java.lang.String)! No property 'username' found for type 'PostLikes' Did you mean ''userName'' : findByUsername의 'username'속성을 찾을 수 없다~~ ''userName''을 의미하는 것이냐~~..
>> PostLikeRepository 레파지토리의 Optional<PostLikes> findByUsername(String userName); 메서드를
Optional<PostLikes> findByUserName(String userName); 로 바꿔주니까 해결되었다.
원인은 JPA 레파지토리의 메서드를 소문자로 입력해줘서 난 오류였다... N과n 코드로 볼때 하필 비슷하여 혼자서는 눈에 안보였다.
에러가 발생하면 에러코드의 첫줄을 천천히 읽어보자.
에러코드 첫줄을 읽었는데도 원인을 찾을 수 없다면 에러콘솔창에서 Caused by 를 검색해 한줄한줄 내려가보면서 에러의 원인을 찾아보자..! 인텔리제이가 웬만하면 다 알려준다..!

느낀점
원인을 힘들게 찾고나니, 에러코드안에 원인이 나와있었던 것을 확인하고 너무나 허무했다.
에러코드를 꼼꼼히 봐야겠다는 교훈을 얻었다.