Fixing NoUniqueBeanDefinitionException Exceptions

Fixing NoUniqueBeanDefinitionException Exceptions


This week one of my students in my Spring Core course ran into an issue how Spring was performing dependency inject. By default, the Spring Framework will perform dependency injection by type. This generally works fine, since you often will only have one bean in the Spring context for a given type. But this is not always the case.

When you do have more than one bean of a given type, you need to tell Spring which bean you wish it to use for dependency injection. If you fail to do so, Spring will throw a NoUniqueBeanDefinitionException exception, which means there’s more than one bean which would fulfill the requirement.

There are two simple ways you can resolve the NoUniqueBeanDefinitionException exception in Spring. You can use the @Primary  annotation, which will tell Spring when all other things are equal to select the primary bean over other instances of that type for the autowire requirement.

The second way, is to use the @Qualifier  annotation. Through the use of this annotation, you can give Spring hints about the name of the bean you want to use. By default, the reference name of the bean is typically the lower case class name.

In the video below, I go through the dependency injection example used in my Spring Core course, and show you how to modify it to get the NoUniqueBeanDefinitionException. I then walk through first using the @Primary  annotation to give a preference to one bean over the other, and the I use the @Qualifier  to specifically select which instance of the bean into my classes.

While the Spring Framework does perform dependency injection by type by default, it does offer you a great deal of control how beans are autowired.

About jt

    You May Also Like

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.