로컬에서 스프링 프로젝트를 빌드할 때는 문제가 발생하지 않았는데, Ec2에서 프로젝트를 빌드하였더니 의존성 주입이 되지 않는 문제가 발생하였다.
🚨버그가 발생한 상황
오류 메시지
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘loginController’ defined in URL [jar:nested:/home/ubuntu/issue-tracker/be/issue-tracker/build/libs/issuetracker-0.0.1-SNAPSHOT.jar/!BOOT-INF/classes/!/com/issuetracker/member/controller/LoginController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name ‘loginService’ defined in URL [jar:nested:/home/ubuntu/issue-tracker/be/issue-tracker/build/libs/issuetracker-0.0.1-SNAPSHOT.jar/!BOOT-INF/classes/!/com/issuetracker/member/service/LoginService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name ‘memberRepository’ defined in com.issuetracker.member.repository.MemberRepository defined in @EnableJdbcRepositories declared on JdbcRepositoriesRegistrar.EnableJdbcRepositoriesConfiguration: Cannot resolve reference to bean ‘jdbc.MemberRepository.fragments#0’ while setting bean property ‘repositoryFragments’
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) ~[spring-beans-6.1.6.jar!/:6.1.6]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) ~[spring-beans-6.1.6.jar!/:6.1.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1355) ~[spring-beans-6.1.6.jar!/:6.1.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1192) ~[spring-beans-6.1.6.jar!/:6.1.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.6.jar!/:6.1.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.6.jar!/:6.1.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.6.jar!/:6.1.6]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.6.jar!/:6.1.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.6.jar!/:6.1.6]
.
.
위와 같이 loginController와 loginService 등등 Bean에 의존성 주입이 되지 않는 문제가 발생하였다.
😮 예상 동작 결과
정상적으로 빌드가 완료된다.
🤗 해결
jdk를 openJdk ➡️ Corretto로 변경하였더니 해결하였다. 찾아보니 빈 주입은 스프링 컨테이너가 하므로 jdk에 영향을 받지 않는다고 한다.
🐞 버그 설명
로컬에서 스프링 프로젝트를 빌드할 때는 문제가 발생하지 않았는데, Ec2에서 프로젝트를 빌드하였더니 의존성 주입이 되지 않는 문제가 발생하였다.
🚨버그가 발생한 상황
위와 같이 loginController와 loginService 등등 Bean에 의존성 주입이 되지 않는 문제가 발생하였다.
😮 예상 동작 결과
정상적으로 빌드가 완료된다.
🤗 해결
jdk를 openJdk ➡️ Corretto로 변경하였더니 해결하였다. 찾아보니 빈 주입은 스프링 컨테이너가 하므로 jdk에 영향을 받지 않는다고 한다.
그러면 왜 해결된걸까?