🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
In this blog post, we will explore the differences between these annotations and demonstrate their use with practical examples.
@Qualifier Annotation
The @Qualifier annotation is used to resolve ambiguity when multiple beans of the same type are present in a Spring application context. It allows you to specify a specific bean to be injected by using a qualifier value.
The @Qualifier annotation is used in conjunction with @Autowired to avoid confusion when we have two or more beans configured for the same type. If there are multiple implementations for a single interface then we can use @Qualifier to choose the required implementation at runtime.
MessageService interface
public interface MessageService {
public void sendMsg(String message);
}EmailService Class
public class EmailService implements MessageService{
public void sendMsg(String message) {
System.out.println(message);
}
}SMSService Class
public class TwitterService implements MessageService{
public void sendMsg(String message) {
System.out.println(message);
}
}TwitterService Class
public class SMSService implements MessageService{
public void sendMsg(String message) {
System.out.println(message);
}
}MessageProcessor Interface and MessageProcessorImpl Class
It's time to see the usage of @Qualifier annotation.public interface MessageProcessor {
public void processMsg(String message);
}
public class MessageProcessorImpl implements MessageProcessor {
private MessageService messageService;
// setter based DI
@Autowired
@Qualifier("twitterService")
public void setMessageService(MessageService messageService) {
this.messageService = messageService;
}
// constructor based DI
@Autowired
public MessageProcessorImpl(@Qualifier("twitterService") MessageService messageService) {
this.messageService = messageService;
}
public void processMsg(String message) {
messageService.sendMsg(message);
}
}// setter based DI @Autowired @Qualifier("twitterService") public void setMessageService(MessageService messageService) { this.messageService = messageService; }
// constructor based DI @Autowired public MessageProcessorImpl(@Qualifier("twitterService") MessageService messageService) { this.messageService = messageService; }
// constructor based DI @Autowired public MessageProcessorImpl(@Qualifier("emailService") MessageService messageService) { this.messageService = messageService; }
@Primary Annotation
@Component
@Primary
public class EmailSender implements MailSender {
// ...
}
@Component
public class SmsSender implements MailSender {
// ...
}
@Service
public class NotificationService {
@Autowired
private MailSender mailSender;
// ...
}
Conclusion
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment