Próbuję automatycznie wyposażyć trochę fasoli (do wstrzyknięcia zależności) za pomocą Springa dla aplikacji webowej. Jeden komponent bean kontrolera zawiera kolejną fasolę, która z kolei trzyma zestaw innych fasoli. Na razie mapa ma tylko jeden wpis. Kiedy biegnę w Tomcat i wezwać serwis pojawia się błąd mówiący, że druga fasola (odbyła się w kontrolerze) nie jest wyjątkowyWiosna w automatach z unikatowymi fasolami: Wiosna oczekiwana pojedyncza pasująca fasola, ale znalazłem 2
No unique bean of type [com.hp.it.km.search.web.suggestion.SuggestionService] is defined: expected single matching bean but found 2: [suggestionService, SuggestionService]
nie widzę, gdzie jestem definiowania fasoli dwukrotnie jednak jestem nowy na wiosnę i autowiring, więc może brakować czegoś podstawowego. Kod źródłowy XML i 2 klasy wymienionych poniżej ...
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="com.hp.it.km.search.web.suggestion" />
<mvc:annotation-driven />
<context:annotation-config />
<bean id="SuggestionController" class="com.hp.it.km.search.web.suggestion.SuggestionController">
<property name="service">
<ref bean="SuggestionService" />
</property>
</bean>
<bean id="SuggestionService" class="com.hp.it.km.search.web.suggestion.SuggestionService">
<property name="indexSearchers">
<map>
<entry key="KMSearcher"> <ref bean="KMSearcherBean"></ref></entry>
</map>
</property>
</bean>
<bean id="KMSearcherBean" class="com.hp.it.km.search.web.suggestion.SuggestionIndexSearcher">
<constructor-arg index="0" value="KMSearcher" />
<constructor-arg index="1" value="C://dev//workspace//search-restful-webapp//src//main//resources//indexes//keyword" />
</bean>
klasy asscoaites z autowired kontrolera i fasoli usług są tutaj ...
@Controller
public class SuggestionController {
private SuggestionService service;
@Autowired
public void setService(SuggestionService service) {
this.service = service;
}
public SuggestionService getService() {
return service;
}
i ...
@Component
public class SuggestionService {
private Map<String, IndexSearcher> indexSearchers = new HashMap<String, IndexSearcher>();
@Autowired
public void setIndexSearchers(Map<String, IndexSearcher> indexSearchers) {
this.indexSearchers = indexSearchers;
}
public SuggestionService() {
super(); }
Proszę o pomoc!
Brilliant Po prostu usunąłem komponent z klasy serwisowej. Następnie otrzymałem komunikat o błędzie, że kontroler jest zarejestrowany dwa razy i obejrzałam to, usuwając skanowanie komponentu zgodnie z tym rozwiązaniem. Http://pl.steroidflow.com/a/4804417/491196 Dziękujemy za pomoc –