Tôi đang có cấu hình sau đây, trong đó có hai bean Spring có cùng tên từ hai lớp cấu hình khác nhau.Khởi động mùa xuân không phàn nàn về hai hạt có cùng tên
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class OtherRestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
Và tôi tiêm (và sử dụng) đậu này như thế này:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@Component
public class SomeComponent {
@Autowired
private RestTemplate restTemplate;
}
Bây giờ, câu hỏi của tôi là: tại sao mùa xuân không phàn nàn về việc có nhiều đậu với cùng tên? Tôi mong đợi một ngoại lệ ở đây và phải thêm chú thích @Primary
để đảm bảo rằng chú thích đúng được sử dụng.
Lưu ý phụ: ngay cả khi tôi thêm @Primary
thì vẫn không phải lúc nào cũng tiêm đúng.
Bạn không thể có đậu có cùng tên, kết quả cuối cùng sẽ là một hạt duy nhất như là một hạt đậu đè khác, do cùng tên. Do đó chỉ có một hạt duy nhất trong ngữ cảnh. Để nhận được nhiều bean, hãy cung cấp cho chúng các tên khác nhau và chú thích một tên bằng '@ Primary'. –