0
0
Spring Bootframework~20 mins

@Qualifier for ambiguous beans in Spring Boot - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Qualifier Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What happens when two beans of the same type exist without @Qualifier?
Consider a Spring Boot application with two beans of the same type but no @Qualifier annotation. What will happen when Spring tries to inject this type?
Spring Boot
public interface Service { void execute(); }

@Service
public class ServiceA implements Service { public void execute() { System.out.println("ServiceA"); } }

@Service
public class ServiceB implements Service { public void execute() { System.out.println("ServiceB"); } }

@Component
public class Client {
    private final Service service;
    public Client(Service service) { this.service = service; }
}
ASpring will throw a NoUniqueBeanDefinitionException due to ambiguity.
BSpring will inject ServiceA by default without error.
CSpring will inject both beans as a list automatically.
DSpring will inject ServiceB by default without error.
Attempts:
2 left
💡 Hint
Think about what happens when Spring finds multiple beans of the same type but no qualifier to distinguish them.
📝 Syntax
intermediate
2:00remaining
Which @Qualifier usage correctly injects the 'serviceB' bean?
Given two beans named 'serviceA' and 'serviceB', which constructor injection correctly uses @Qualifier to inject 'serviceB'?
Spring Boot
@Service("serviceA")
public class ServiceA implements Service {}

@Service("serviceB")
public class ServiceB implements Service {}

@Component
public class Client {
    private final Service service;
    public Client(@Qualifier("serviceB") Service service) {
        this.service = service;
    }
}
Apublic Client(@Qualifier(serviceB) Service service) { this.service = service; }
Bpublic Client(@Qualifier("serviceB") Service service) { this.service = service; }
Cpublic Client(@Qualifier(ServiceB.class) Service service) { this.service = service; }
Dpublic Client(@Qualifier("ServiceB") Service service) { this.service = service; }
Attempts:
2 left
💡 Hint
Remember @Qualifier requires a string matching the bean name.
state_output
advanced
2:00remaining
What is printed when injecting with @Qualifier in this example?
Given these beans and injection, what will be printed when client.run() is called?
Spring Boot
@Service("serviceA")
public class ServiceA implements Service {
    public void execute() { System.out.println("Running ServiceA"); }
}

@Service("serviceB")
public class ServiceB implements Service {
    public void execute() { System.out.println("Running ServiceB"); }
}

@Component
public class Client {
    private final Service service;
    public Client(@Qualifier("serviceB") Service service) {
        this.service = service;
    }
    public void run() { service.execute(); }
}
ARunning ServiceA
BCompilation error due to missing @Autowired
CNo output, NullPointerException occurs
DRunning ServiceB
Attempts:
2 left
💡 Hint
Look at which bean is injected by @Qualifier and what its execute() method prints.
🔧 Debug
advanced
2:00remaining
Why does this code cause a NoSuchBeanDefinitionException?
This code tries to inject a bean with @Qualifier("serviceC"), but no such bean exists. What error occurs and why?
Spring Boot
@Service("serviceA")
public class ServiceA implements Service {}

@Service("serviceB")
public class ServiceB implements Service {}

@Component
public class Client {
    private final Service service;
    public Client(@Qualifier("serviceC") Service service) {
        this.service = service;
    }
}
ANullPointerException because service is null.
BNoUniqueBeanDefinitionException because multiple beans exist.
CNoSuchBeanDefinitionException because no bean named 'serviceC' exists.
DBeanCreationException due to circular dependency.
Attempts:
2 left
💡 Hint
Check if the bean name in @Qualifier matches any defined bean.
🧠 Conceptual
expert
2:00remaining
How does @Qualifier help resolve ambiguity in Spring bean injection?
Why is @Qualifier important when multiple beans of the same type exist? Choose the best explanation.
A@Qualifier specifies the exact bean name to inject, resolving ambiguity when multiple beans of the same type exist.
B@Qualifier automatically merges all beans of the same type into a collection for injection.
C@Qualifier disables dependency injection for ambiguous beans to avoid errors.
D@Qualifier renames beans at runtime to avoid conflicts.
Attempts:
2 left
💡 Hint
Think about how Spring decides which bean to inject when there are many candidates.