Tôi đang cố gắng sử dụng Spring IoC với một giao diện như thế này:Xuân IoC và Generic Interface Loại
public interface ISimpleService<T> {
void someOp(T t);
T otherOp();
}
Can Học Kỳ Mùa Xuân cung cấp IoC dựa vào loại lý luận chung T? Ý tôi là, một cái gì đó như thế này:
public class SpringIocTest {
@Autowired
ISimpleService<Long> longSvc;
@Autowired
ISimpleService<String> strSvc;
//...
}
Tất nhiên, ví dụ của tôi ở trên không hoạt động:
expected single matching bean but found 2: [serviceLong, serviceString]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstantiation(AutowiredAnnotationBeanPostProcessor.java:243)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:957)
Câu hỏi của tôi: là nó có thể cung cấp một chức năng tương tự với những thay đổi tối thiểu để một trong hai giao diện hoặc các lớp thực hiện? Tôi biết ví dụ tôi có thể sử dụng @Qualifiers, nhưng tôi muốn giữ mọi thứ càng đơn giản càng tốt.
Nó có vẻ là có thể bây giờ kể từ mùa xuân 4.0. Xem [SO trả lời] này (http://stackoverflow.com/a/22603321/196533) và bài viết Spring có tiêu đề [Spring Framework 4.0 và Java Generics] (http://spring.io/blog/2013/12/03/spring-framework-4-0-and-java-generics). – chrisjleu