egov 3.9에서 4.0 Boot 로 변환 시 발생한 Bean 등록 오류
- 작성자 :
- 이*희
- 작성일 :
- 2022-06-21 15:31:05
- 조회수 :
- 1,247
- 구분 :
- 개발환경 / 4.0
- 진행상태 :
- 완료
Q
[전자정부프레임워크 문의사항]
egov 3.9 (Spring Framework - 싱글 모듈) 사용중
=> egov 4.0 (Spring Boot - 멀티 모듈) 변환중 Service Bean name 을 중복으로 인식하는 문제로 추측됨.
(실제로는 하나의 Service 인데 멀티모듈로 올라오면서 중복으로 인식하는듯...)
[기존 3.9] - 싱글 모듈 @Autowired 사용 X
------------------- Service -------------------
@Service("memberDataService")
public class MemberDataServiceImpl extends EgovAbstractServiceImpl implements MemberDataService { ... }
public interface MemberDataService { .. }
(사용)
@Resource(name = "memberDataService") => 실제로는 MemberDataServiceImpl 구현체...
MemberDataService memberDataService;
=============================================> 정상
[egov 4.0 - boot] - 멀티 모듈
------------------- Service -------------------
@Service("memberDataService")
public class MemberDataServiceImpl extends EgovAbstractServiceImpl implements MemberDataService { ... }
public interface MemberDataService { .. }
(사용)
@Resource(name = "memberDataService") => 실제로는 MemberDataServiceImpl 구현체...
MemberDataService memberDataService;
=============================================> ##에러##
org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name ... conflicts with existing, non-compatible bean definition of same name and class
이미 존재하는 bean name?
<수정-1>
@Service("memberDataServiceImpl")
public class MemberDataServiceImpl extends EgovAbstractServiceImpl implements MemberDataService { ... }
public interface MemberDataService { .. }
(사용)
@Resource(name = "memberDataServiceImpl") => 실제로는 MemberDataServiceImpl 구현체...
MemberDataService memberDataService;
=============================================> @@정상@@
*******
수정안 여러가지를 첨부파일에 작성하였습니다.
Boot로 변경 시 자동으로 등록되는 Bean name 과 충돌하는것 같은데 Service가 많다보니 전부 내용을 수정하기가 쉽지않을 것같아
옵션등으로 간단히 처리 할 수 있는 방안이 있는지 궁금합니다.
egov 3.9 (Spring Framework - 싱글 모듈) 사용중
=> egov 4.0 (Spring Boot - 멀티 모듈) 변환중 Service Bean name 을 중복으로 인식하는 문제로 추측됨.
(실제로는 하나의 Service 인데 멀티모듈로 올라오면서 중복으로 인식하는듯...)
[기존 3.9] - 싱글 모듈 @Autowired 사용 X
------------------- Service -------------------
@Service("memberDataService")
public class MemberDataServiceImpl extends EgovAbstractServiceImpl implements MemberDataService { ... }
public interface MemberDataService { .. }
(사용)
@Resource(name = "memberDataService") => 실제로는 MemberDataServiceImpl 구현체...
MemberDataService memberDataService;
=============================================> 정상
[egov 4.0 - boot] - 멀티 모듈
------------------- Service -------------------
@Service("memberDataService")
public class MemberDataServiceImpl extends EgovAbstractServiceImpl implements MemberDataService { ... }
public interface MemberDataService { .. }
(사용)
@Resource(name = "memberDataService") => 실제로는 MemberDataServiceImpl 구현체...
MemberDataService memberDataService;
=============================================> ##에러##
org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name ... conflicts with existing, non-compatible bean definition of same name and class
이미 존재하는 bean name?
<수정-1>
@Service("memberDataServiceImpl")
public class MemberDataServiceImpl extends EgovAbstractServiceImpl implements MemberDataService { ... }
public interface MemberDataService { .. }
(사용)
@Resource(name = "memberDataServiceImpl") => 실제로는 MemberDataServiceImpl 구현체...
MemberDataService memberDataService;
=============================================> @@정상@@
*******
수정안 여러가지를 첨부파일에 작성하였습니다.
Boot로 변경 시 자동으로 등록되는 Bean name 과 충돌하는것 같은데 Service가 많다보니 전부 내용을 수정하기가 쉽지않을 것같아
옵션등으로 간단히 처리 할 수 있는 방안이 있는지 궁금합니다.
환경정보
-
- OS 정보 : windows 10 Pro
- 표준프레임워크 버전 : 4.0
- JDK(JRE) 정보 : openjdk version "1.8.0_242"
- WAS 정보 : Boot Dashboard(내장톰캣?)
- DB 정보 : Oracle 11g
- 기타 환경 정보 : egov 3.9 => egov 4.0으로 변환하는 과정에서 발생한 오류
A
안녕하세요.
표준프레임워크센터 입니다.
첨부하여 파일 내용을 참고하여 센터 측에서 테스트를 진행하여 본 결과
오류가 발생한다고 전달 주신 설정에서도 정상 동작을 확인하였습니다.
Spring Boot로 변환 전의 bean 설정이 남아 있어서 충돌이 일어났을 가능성이 있으므로 project clean을 진행하여 보시기 바랍니다.
Spring Boot 설정에서(application.properties) 수동 bean이 자동 bean을 오버라이딩하게 하는 방법도 있지만, 추후 의도하지 못한 버그를 발생시킬 가능성이 있으므로 권장되는 방법은 아닙니다.
감사합니다.
표준프레임워크센터 입니다.
첨부하여 파일 내용을 참고하여 센터 측에서 테스트를 진행하여 본 결과
오류가 발생한다고 전달 주신 설정에서도 정상 동작을 확인하였습니다.
Spring Boot로 변환 전의 bean 설정이 남아 있어서 충돌이 일어났을 가능성이 있으므로 project clean을 진행하여 보시기 바랍니다.
Spring Boot 설정에서(application.properties) 수동 bean이 자동 bean을 오버라이딩하게 하는 방법도 있지만, 추후 의도하지 못한 버그를 발생시킬 가능성이 있으므로 권장되는 방법은 아닙니다.
감사합니다.