Multiple Autowire Candidates with Spring @Qualifier

บางครั้งเรามี Bean ที่ implement มาจาก interface เดียวกันหลายๆ ตัวที่อยู่ใน spring environment เราสามารถระบุตัวที่เราต้องการเรียกใช้ได้โดยใช้ @Qualifier

ดูตัวอย่างง่ายๆ นะครับ

public interface DataRepository { 
void save();
}

เรามี interface ที่ชื่อว่า DataRepository ต่อไปเรามาสร้าง implementation ของ interface นี้กันนะครับ

@Repository
public class MysqlDataRepository implements DataRepository{

@Override
public void save() {
System.out.println("saving in mysql");
}
}

และ

@Repository
public class OracleDataRepository implements DataRepository{

@Override
public void save() {
System.out.println("saving in oracle");
}
}

ต่อไปเป็นวิธีเรียกใช้

@Component
public class Client{

@Autowired
@Qualifier(value = "mysqlDataRepository")
private DataRepository mysqlDataRepository;

@Autowired
@Qualifier(value = "oracleDataRepository")
private DataRepository oracleDataRepository;

public void sendMessage(){
mysqlDataRepository.save();
oracleDataRepository.save();
}
}

ง่ายๆ นะครับ เอาไปใช้งานกันดูนะครับ

Like what you read? Give Chiwa Kantawong (Pea) a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.