JAVA/소박한그룹 프로젝트

[Spring] 인텔리제이 디렉토리 구조 변경 중 발생한 Error

kth990303 2021. 9. 8. 18:22
반응형

intellij로 스프링으로 작업하던 중, 도메인 폴더 내에 controller, service, dto, domain, mapper 등 파일이 너무 많아져서 예쁘게 폴더별로 정리하던 도중 에러가 발생했다.

 

폴더 변경 리팩토링 과정에서 인텔리제이는 import 폴더경로를 자동으로 수정해주기 때문에 웬만해선 에러가 발생하지 않는데, 에러가 발생해서 조금 당황스러웠지만, 차근차근 살펴보니 어렵지 않았다.

 

에러 내용은 아래와 같았다.

 


Annotation-specified bean name 'memberIdMapperImpl' for bean class [algopa.study.member.mapper.MemberIdMapperImpl] conflicts with existing, non-compatible bean definition of same name and class [algopa.study.member.MemberIdMapperImpl]


위 에러는 스프링이 빈을 중복으로 인식해서 발생한 것이므로 gradle을 깔끔하게 청소해주도록 하자.

아래 글이 도움이 될 것이다.

https://github.com/jojoldu/freelec-springboot2-webservice/issues/271

 

[오류] indexController 폴더 변경후 bean중복 오류 · Issue #271 · jojoldu/freelec-springboot2-webservice

어떤 오류인가요? 오류설명: 안녕하세요 indexController 클래스위치를 src.main.java.com.cocicalc.web.dto 로 잘못되어 있어서 src.main.java.com.cocicalc.web 로 옮겼는데 이후로 Application.java를 구동하면 org.springfram

github.com

 

1. out 폴더 삭제

2. gradle에서 build폴더 내의 clean -> build 진행

build 과정에서 일부 에러가 발생할 수 있다.

나의 경우 아래 에러가 발생했다.


Execution failed for task ':test'.


이 경우는 test code의 위치가 main 코드의 디렉토리 위치와 다르기 때문에 발생한 것 같다.

나의 경우, service 클래스명을 MemberServiceImpl 에서 MemberService로 변환했기 때문에 발생한 것 같다.

https://www.inflearn.com/questions/15495

 

테스트 도중 에러 발생 - 인프런 | 질문 & 답변

FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > No tests found for given includes: [jpabook.jpashop....

www.inflearn.com

 

참고로 변환한 이유는 아래와 같다.

https://www.popit.kr/spring-oop-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%98%88%EC%A0%9C1-service-serviceimpl-%EA%B5%AC%EC%A1%B0%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%A0%EC%B0%B0/

 

Spring OOP - Service, ServiceImpl 구조에 대한 고찰 | Popit

예제 코드는 GitHub 에 공개 되어 있습니다. 스프링을 처음 공부 할 때 많이 사용되는 Service, ServiceImpl 구조에 관해서 이야기 하려고 합니다. 저도 처음 Spring을 학습할 때 Service, ServiceImpl 구조를 그

www.popit.kr

이 부분은 정답이 없다. 스프링 작업을 하면서 정답없는 경우를 되게 많이 마주치게 되는데, 이래서 경험이 진짜 중요한 것 같다. 개인프로젝트의 아쉬운 점은 더 나은 경험을 찾기 힘들다는점이 아닌가 싶다 ㅜㅜ

 

아무튼 그래서 test code는 어차피 코드 리팩토링 하면서 다시 작성해야했기 때문에, 아예 지우고 새로 생성해주었다.

이후 다시 build하니까 성공!

 

디렉토리 구조가 예쁘게 폴더로 정리되었다.

클래스가 덕지덕지 많이 붙어있는 것보다 훨씬 이쁘지 않은가? 

다른 사람들이 보기에도 편할 듯.

 

Dto, mapper, service가 여러 개가 될수록 이러한 작업은 특히 중요한 듯하다.

 

이렇게 오늘 발생한 에러를 포스팅함으로써 또 하나의 경험이 늘어났다.

 

 

반응형