Printemps injecté des ressources est toujours null
QUESTION:
Je suis en train d'injecter un service dans un bean, mais l'instance de service est toujours null.
De FOND:
J'ai deux grains d'un appelé de l'autre. C'est de cette façon qu'ils sont définis dans la configuration XML:
<context:annotation-config />
<bean class="com.test.MyBeanImpl" name="myBean"/>
<bean id="myService" class="com.test.MyServiceImpl" />
et les haricots sont mis en œuvre comme suit:
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() {}
}
QUESTIONS:
Est-il une raison liée au fait que mon bean implémente 3 interfaces qui empêche le Service de l'injection? Si non, que d'autres facteurs pourraient effectuer?
Pourriez-vous poster la déclaration de classe pour la classe que vous essayez d'injecter
J'ai mis à jour l'OP pour inclure plus d'info. Fondamentalement, je n'ai pas d'annotations dans le MyService interface ou classe d'implémentation. Cheers
Si votre bean fichier de configuration ne contient pas de
J'ai mis à jour l'OP, pour être plus clair
MyService
et l'ensemble de la configuration?J'ai mis à jour l'OP pour inclure plus d'info. Fondamentalement, je n'ai pas d'annotations dans le MyService interface ou classe d'implémentation. Cheers
Si votre bean fichier de configuration ne contient pas de
<context:annotation-config/>
je ne crois pas @Resource
fonctionne. Voir le résumé que j'ai posté. Je l'ai testé et il fonctionne. Si il ne répond pas à vos besoins, laissez-moi savoir comment votre situation est différente et je vais modifier.J'ai mis à jour l'OP, pour être plus clair
OriginalL'auteur travega | 2014-01-15
Vous devez vous connecter pour publier un commentaire.
que vous êtes en utilisant des annotations Juste la marque de votre classe de service avec
@Service
annotation et l'utilisation@Autowired
annotation pour obtenir l'instance de votre classe de serviceMyServiceImpl.java
MyBeanImpl.java
aussi assurez-vous de mentionner votre nom de paquet dans
<context:component-scan />
élément dans votre répartiteur de fichier commeespère que cela permettra de résoudre votre problème
OriginalL'auteur Ashish Jagtap
Assurez-vous que le bean vous êtes l'injection de
MyService
en est un haricot.Assurez-vous également qu'au sein de votre configuration, vous avez indiqué que l'application utilise l'annotation à base de configuration à l'aide de:
Depuis votre utilisation de plusieurs interfaces, il peut être préférable de qualifier le haricot avec un nom:
Puis spécifiez le nom de l'élément sur la
@Resource
annotationIci est un Github Gist qui explique ces concepts.
OriginalL'auteur Kevin Bowersox