mogę to zrobić w moim ApplicationContext z wiosny (3.0.5):można utworzyć HashMap z wiosny, ale nie mogą tworzyć Mapa
<bean id="map" class="java.util.HashMap" scope="prototype" >
<constructor-arg>
<map key-type="java.lang.String" value-type="java.lang.String">
<entry key="Key 1" value="1" />
<entry key="Key 2" value="2" />
</map>
</constructor-arg>
</bean>
I w moim kontrolera, mogę autowired moją mapę tak:
@Autowired
@Qualifier("map")
private HashMap<String, String> map;
to działa dobrze, ale jeśli mogę to zrobić:
@Autowired
@Qualifier("map")
private Map<String, String> map;
otrzymuję że:
spowodowane przez: org.springframework.beans.factory.NoSuchBeanDefinitionException: Nie dopasowanie fasoli typu [java.lang.String] znaleziono zależność [mapy z rodzaju Wartość java.lang.String] Oczekuje się co najmniej 1 komponent bean, który kwalifikuje się jako kandydat na autora dla tej zależności. Zależnościami adnotacje: {@ org.springframework.beans.factory.annotation.Autowired (wymagane = true), @ org.springframework.beans.factory.annotation.Qualifier (wartość = map)}
My Pytanie brzmi: Dlaczego nie mogę automaredować mojej mapy za pomocą interfejsu, kiedy mogę z implementacją?
Dzięki.
nie mają id fasolowa z mapy, to jest mylące – NimChimpsky
prawdziwym problemem jest: mapa nie powinna być w ogóle fasola wiosna w pierwsze miejsce. usługi powinny być fasolą, dane nie powinny. Jeśli naprawdę chcesz utworzyć komponent bean mapy, utwórz komponent bean, który zawiera mapę i wstrzyknij. –
@SeanPatrickFloyd, dlaczego nie można wstrzyknąć niczego i uzyskać korzyści. Nie ma żadnych negatywnych efektów? (zakładając, że nadałeś mu opisową nazwę) – NimChimpsky