Printemps Bean permettra à l'autowiring erreur
Je suis en train de mettre en œuvre la fonctionnalité e-mail dans mon application, mais je reçois
No matching bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.
Quelqu'un peut-il point de ce que je fais mal?
La configuration xml pour le haricot est:
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<context:annotation-config/>
//...other stuff
<beans:bean id="mailSession" class="org.springframework.jndi.JndiObjectFactoryBean">
<beans:property name="jndiName" value="EmailServer" />
</beans:bean>
<beans:bean id="emailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<beans:property name="session" ref="mailSession"/>
</beans:bean>
EmailServiceImpl classe:
@Service
public class EmailServiceImpl implements EmailService {
@Autowired
private JavaMailSenderImpl emailSender;
//more code..
}
Vous devez vous connecter pour publier un commentaire.
J'ai été aux prises avec ce problème pour un service de messagerie de classe codée comme:
Je tombé à travers une solution lors de la lecture sur un sujet connexe. Le point clé est que
JavaMailSender
interface est définie dans leapplicationContext.xml
comme le PrintempsJavaMailSenderImpl
classe.Étape 1: Le contexte de l'application fichier a été modifié pour inclure les éléments suivants bean définition:
Étape 2: Le service email de la classe a été modifié pour ressembler à:
Le tour est joué! Le printemps est heureux. Je serait même si, comme pour entendre une explication correcte de l'erreur d'origine.
Merci à tous pour leurs réponses. Je n'ai pu obtenir l'permettra à l'autowiring de travail, mais j'ai eu l'ensemble de la solution de messagerie de travailler en procédant de la manière suivante:
ajouter à servlet-context.xml:
ajouter à web.xml:
ajouter à weblogic.xml:
EmailServiceImpl:
Vous devez ajouter
<context:annotation-config/>
à votre fichier de configuration afin de Printemps à autowire annoté haricots.http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-annotation-config
De message d'erreur, je peux conclure qui permettra à l'autowiring est au travail , mais ce n'est pas en mesure de trouver le nécessaire bean.
Assurez-vous de charger tous les haricots et les fichiers de définition.
Avez-vous un @Service ou similaire annotation sur votre JavaMailSenderImpl classe elle-même? Ce sera la cause de Printemps du composant scanner pour mettre une instance dans le ressort du conteneur, qu'il peut ensuite autowire sur le EmailServiceImpl.
C'est la façon dont je l'ai corrigé:
Je suis tombé sur cette question aussi, j'ai essayé de suivre les simples tutoriels en ligne qui a parfaitement fonctionné lors des tests par le chargement d'app-context.xml fichier manuellement, mais quand j'ai essayé de lancer mon application spring mvc il conservé comme preuve de cette erreur:
Après avoir essayé toutes sortes de choses, il m'est arrivé de déplacer ces deux lignes de mon JPA/DB fichier de configuration vers le bas de ma racine du fichier de config.
Je suis encore à apprendre le Printemps, mais je pense il y a un problème concernant l'ordre dans lequel ils apparaissent.
Edit:
Cette question semble clarifier la question avec la commande:
Différence entre applicationContext.xml et spring-servlet.xml dans le Cadre du Printemps