반응형
Error
SpringBoot에서 MongoDB테스트를 위해 MongoClient를 사용하여 JUnit 테스트로 코드를 실행 시 아래와 같은 에러 발생
Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)
반응형
Solution
찾아보니 Tomcat 인스턴스가 두 개 이상 있는지 확인, 자바버전업, 트렌젝션 문제.. 등등 다양한 해결 방법이 있었으나 실패..
나의 경우 SpringBoot에서 ReactiveMongoTemplate를 사용하여 DB연결을 이용하였는데, 실행시 MongoClient내에서 쿼리 실행시 라이브러리 내에서 publishOn을 통해 새로운 스레드 상에서 실행이 되어야하는데 Test코드상에서 생성된 Bean은 기존 main스레드 상에서 실행되어 connection bean이 여러개일 경우 해당에러가 발생함.
아래와 같이 새로운 스레드를 사용할 수 있도록 subscribeOn으로 설정하면 일시적 해결 가능
reactiveMongoTemplate.find(query, TestData.class, "test")
.subscribeOn(Schedulers.boundedElastic())
.subscribe(result -> {
log.info("result : {}", result);
});
해당 문제는 JUnit테스트 상에서만 발생하는 듯함.
Thank you!
반응형