Giả sử bạn có một giao diệnXuân Autowire Annotation với số Interface Triển khai
public interface A {
public void doSomething();
}
và hai thi lớp
@Component(value="aImpl1")
public class AImpl1 implements A {
}
@Component(value="aImpl2")
public class AImpl2 implements A{
}
Và cuối cùng là một lớp mà sẽ sử dụng một "A" thực hiện:
@Component
public class MyClass {
@Autowire
A a;
}
Bây giờ nếu tôi muốn tiêm AImpl1 tôi thêm các @Qualifier ("aImpl1") trong khi nếu tôi muốn tiêm AImpl2 tôi thêm @Qualifier ("aImpl2")
Câu hỏi đặt ra là: Có thể hướng dẫn xuân bằng cách nào đó để tra cứu tất cả việc triển khai "A" trong trường hợp này là AImpl1 và AImpl2 và sử dụng một số quy ước cụ thể của ứng dụng để chọn triển khai phù hợp nhất? ví dụ trong trường hợp này, quy ước của tôi có thể sử dụng triển khai với hậu tố lớn nhất (tức là AImpl2)?
EDIT: lớp MyClass không nên biết gì về logic tra cứu triển khai, nó chỉ nên tìm thuộc tính "a" được đặt với đối tượng AImpl2.
Bạn muốn giữ logic tra cứu ở đâu? Nếu trong tệp cấu hình ngữ cảnh XML, các bí danh có phải là một tùy chọn không? Còn về vòng loại tùy chỉnh thì sao? –
Điều gì khiến bạn nghĩ rằng câu trả lời không được cập nhật? Có vấn đề với phiên bản Spring gần đây không? Hoặc nó không hoạt động với lớp Application Context cụ thể? –
@AdrianBer logic nên có một số loại cấu hình cho Mùa xuân và được áp dụng cho tất cả các lần tra cứu. gargc đã trả lời những gì tôi cần. –