Frühling injiziert Ressource ist immer null
PROBLEM:
Ich versuche zu injizieren einer service-in eine Bohne, sondern der service-Instanz ist immer null.
HINTERGRUND:
Habe ich zwei Bohnen, die man rief von der anderen. Dies ist, wie Sie definiert sind in der XML-config:
<context:annotation-config />
<bean class="com.test.MyBeanImpl" name="myBean"/>
<bean id="myService" class="com.test.MyServiceImpl" />
und die Bohnen sind implementiert, etwa so:
MyServiceImpl.java
class MyServiceImpl implements MyService {
public void getString() {
return "Hello World";
}
}
MyBeanImpl.java
@Component
class MyBeanImpl implements MyBean, SomeOtherBean1, SomeOtherBean2 {
@Resource(name="myBean")
private MyService myService;
public MyBeanImpl() {}
}
FRAGEN:
Gibt es einige Grund im Zusammenhang mit der Tatsache, dass mein bean implementiert 3 Schnittstellen, die verhindert, dass das Service eingespritzt wird? Wenn nicht, welche anderen Faktoren könnte bewirken?
Könnte Sie buchen die Deklaration der Klasse für die Klasse, die Sie versuchen, zu injizieren
Ich habe aktualisiert die OP um weitere info. Grundsätzlich habe ich keine Anmerkungen in der MyService-interface oder implementation class. Cheers
Wenn Ihr bean-Konfiguration-Datei nicht enthalten
Ich habe aktualisiert die OP, um deutlicher zu sein
MyService
und die gesamte Konfiguration?Ich habe aktualisiert die OP um weitere info. Grundsätzlich habe ich keine Anmerkungen in der MyService-interface oder implementation class. Cheers
Wenn Ihr bean-Konfiguration-Datei nicht enthalten
<context:annotation-config/>
ich glaube nicht, dass @Resource
arbeiten. Finden Sie die Kernaussage, die ich gepostet. Ich habe getestet und es funktioniert. Wenn es Ihren Anforderungen nicht lassen Sie mich wissen, wie Sie Ihre situation unterscheidet und werde ich ändern.Ich habe aktualisiert die OP, um deutlicher zu sein
InformationsquelleAutor travega | 2014-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
wie Sie mit Hilfe von Annotationen markieren Sie Einfach Ihre service-Klasse mit
@Service
annotation und Verwendung@Autowired
annotation, um die Instanz der service-KlasseMyServiceImpl.java
MyBeanImpl.java
auch sicher, dass Sie erwähnen in Ihrem Paket-Namen in
<context:component-scan />
element in Ihrem dispatcher-Datei alshoffe, dies wird Ihr problem lösen
InformationsquelleAutor Ashish Jagtap
Stellen Sie sicher, dass die bean injiziert werden Sie
MyService
in ist eine Bohne.Stellen Sie außerdem sicher, dass in Ihrer Konfiguration, die Sie angegeben haben, verwendet die Anwendung annotation-basierte Konfiguration verwenden:
Seit Ihr mit mehreren Schnittstellen kann es am besten, um sich zu qualifizieren, die Bohne mit Namen:
Geben Sie dann das name-element auf der
@Resource
annotationHier ist ein Github-Gist erklärt, dass diese Konzepte.
InformationsquelleAutor Kevin Bowersox