<bean>의 속성 중 autowire에서 byType을 사용했을 때 에러가 발생했다.
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.test02.Food' available: expected single matching bean but found 2: favoriteFood,unFavoriteFood
at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:220)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1358)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1501)
... 13 more
이 에러의 뜻을 풀어보자면 <bean>이 유니크가 아니라서 예외가 발생했다. 라고 한다.
찾아보니 autowire의 byType속성은 해당 클래스의 setter의 parameterType과 같은 type의 bean이 있으면 자동할당된다고 나와있다.
위의 코드에서 <bean>이 찾는 class가 MyFood인데 MyFood에는 favoriteFood와 unFavoriteFood 이 2개의 파라미터가 있어서 어떻게 연결해야할지 모르겠다 라고 하는것이다.
이 경우에는 byType속성을 사용할 수 없으니 byName이나 다른속성을 사용하여 값을 찾아준다.
byName 속성을 사용했더니 값이 잘 나오는 것을 알 수 있다.
'Java > Error' 카테고리의 다른 글
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 에러 (0) | 2021.07.31 |
---|---|
Invalid property ' ' of bean class 에러 (0) | 2021.06.21 |