2014-01-13 7 views
6

In RegistrationService, @Autowired registrationDao und registerCustomer funktionieren ok. Aber es kann ActivationMailService nicht automatisch verdrahten.Spring Autowired Ausnahme (Feld konnte nicht Autowire ..)

Ich habe das Problem nicht gefunden. Es funktioniert, wenn ich ActivationMailService in RegistrationService entferne. Könnte mir bitte jemand sagen, was das Problem in meinem Code ist?

Ich habe das Projekt http://www.mediafire.com/?baum85us0rmmue3

ich diese Fehler hochgeladen unten, wenn ich die Anwendung ausführen:

Hibernate: drop table if exists Customer 
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'activationMailServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected com.game.portal.utils.SendMail com.game.portal.services.impl.ActivationMailServiceImpl.sendMail; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sendMail': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.mail.javamail.JavaMailSenderImpl com.game.portal.utils.SendMail.mailSender; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected com.game.portal.utils.SendMail com.game.portal.services.impl.ActivationMailServiceImpl.sendMail; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sendMail': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.mail.javamail.JavaMailSenderImpl com.game.portal.utils.SendMail.mailSender; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286) 
    ... 22 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sendMail': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.mail.javamail.JavaMailSenderImpl com.game.portal.utils.SendMail.mailSender; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:912) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:855) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489) 
    ... 24 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.mail.javamail.JavaMailSenderImpl com.game.portal.utils.SendMail.mailSender; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286) 
    ... 35 more 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489) 
    ... 37 more 
Jan 14, 2014 11:45:14 AM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'activationMailServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected com.game.portal.utils.SendMail com.game.portal.services.impl.ActivationMailServiceImpl.sendMail; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sendMail': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.mail.javamail.JavaMailSenderImpl com.game.portal.utils.SendMail.mailSender; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected com.game.portal.utils.SendMail com.game.portal.services.impl.ActivationMailServiceImpl.sendMail; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sendMail': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.mail.javamail.JavaMailSenderImpl com.game.portal.utils.SendMail.mailSender; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286) 
    ... 22 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sendMail': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.mail.javamail.JavaMailSenderImpl com.game.portal.utils.SendMail.mailSender; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:912) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:855) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489) 
    ... 24 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.mail.javamail.JavaMailSenderImpl com.game.portal.utils.SendMail.mailSender; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286) 
    ... 35 more 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489) 
    ... 37 more 

verwalten Bohne:

package com.game.portal.managedbeans; 

import java.io.Serializable; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import javax.faces.bean.ViewScoped; 

import com.game.portal.entities.Customer; 
import com.game.portal.services.RegistrationService; 

@ViewScoped 
@ManagedBean 
public class CustomerBean implements Serializable { 

    private static final long serialVersionUID = 7291708796066664438L; 

    @ManagedProperty(value="#{registrationService}") 
    RegistrationService registrationService; 

    Customer customer = new Customer(); 

    public void registerCustomer(){ 
     customer.setName("xxx"); 
     customer.setSurname("xxx"); 
     customer.setUsername("xxx"); 
     customer.setEmail("[email protected]"); 
     customer.setPassword("xxxx"); 

     registrationService.registerCustomer(customer); 

    } 

    public Customer getCustomer() { 
     return customer; 
    } 

    public void setCustomer(Customer customer) { 
     this.customer = customer; 
    } 

    public RegistrationService getRegistrationService() { 
     return registrationService; 
    } 

    public void setRegistrationService(RegistrationService registrationService) { 
     this.registrationService = registrationService; 
    } 

} 

Hier ist RegistrationService

package com.game.portal.services; 

import javax.faces.application.FacesMessage; 
import javax.faces.context.FacesContext; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 

import com.game.portal.dao.RegistrationDao; 
import com.game.portal.entities.Company; 
import com.game.portal.entities.Customer; 

@Service 
public class RegistrationService { 

    @Autowired 
    RegistrationDao registrationDao; 

    @Autowired 
    ActivationMailService activationMailService; 

    public void registerCustomer(Customer customer) { 

     System.out.println("RegistrationUserBean:: Registering user " + customer.getName() + " " + customer.getUsername() + ", with email " + customer.getEmail()); 
     registrationDao.registerCustomer(customer); 
     activationMailService.sendActivationMail(customer); 

     FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Registration success", "success"); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 

    public void registerCompany(Company company) { 

     System.out.println("RegistrationUserBean:: Registering user " + company.getName() + " " + company.getUsername() + ", with email " + company.getEmail()); 
     registrationDao.registerCompany(company); 

     FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Registration success", "success"); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 

} 

ActivationMailService

Hinweis: Getestet habe ich die @Autowired auf SendMail, HashMap und EmailTemplateService entfernen. Es klappt. Es gibt kein Problem mit @Autowired auf ActivationCodeService. Es ist wirklich seltsam.

package com.game.portal.services; 

import java.io.UnsupportedEncodingException; 
import java.net.URLEncoder; 
import java.util.HashMap; 

import org.apache.log4j.Logger; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
import com.game.portal.entities.Customer; 
import com.game.portal.utils.SendMail; 

@Service 
public class ActivationMailService { 

    @Autowired 
    protected ActivationCodeService activationCodeService; 
    @Autowired 
    protected SendMail sendMail; 
    @Autowired 
    protected HashMap<String, String> emailMap; 
    @Autowired 
    private EmailTemplateService mailTemplateService; 

    protected static final Logger logger = Logger.getLogger("ActivationMailService"); 

    public void sendActivationMail(Customer customer) { 
     try { 
      sendMail.send("test", "test", customer.getEmail(), createActivationMailMessage(customer)); 
     } catch (UnsupportedEncodingException e) { 
      logger.error(e.getMessage(), e); 
     } 
    } 

    private String createActivationMailMessage(Customer customer) throws UnsupportedEncodingException { 
     String emailTemplate = mailTemplateService.generateTemplate("activation", emailMap.get("domain_name")); 

     return emailTemplate; 
    } 
} 

SendMail.class

import java.util.ArrayList; 
import java.util.HashMap; 

import javax.activation.FileDataSource; 
import javax.mail.internet.MimeMessage; 

import org.apache.log4j.Logger; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Lazy; 
import org.springframework.context.annotation.Scope; 
import org.springframework.mail.javamail.JavaMailSenderImpl; 
import org.springframework.mail.javamail.MimeMessageHelper; 
import org.springframework.stereotype.Service; 

@Lazy(true) 
@Scope("singleton") 
@Service 
public class SendMail { 

    private static Logger logger = Logger.getLogger(SendMail.class); 

    @Autowired 
    JavaMailSenderImpl mailSender; 

    @Autowired 
    private HashMap<String, String> emailMap; 

    public boolean send(String subject, String from, String[] to, String message) { 
     boolean sendSuccessfull = true; 

     MimeMessage mailMessage = mailSender.createMimeMessage(); 
     MimeMessageHelper helper = new MimeMessageHelper(mailMessage, "UTF-8"); 
     try { 
      helper.setFrom(from, emailMap.get("fromName")); 
      helper.setTo(to); 
      helper.setSubject(subject); 
      helper.setText(message, true); 
      mailSender.send(mailMessage); 
      logger.warn("SEND MAIL TO : " + to + " WITH SUBJECT " + subject 
       + " OK "); 
     } catch (Exception e) { 
      logger.error(e.getMessage(), e); 
      sendSuccessfull = false; 
     } 

     return sendSuccessfull; 
    } 

    public boolean send(String subject, String from, String to, String message) { 
     boolean sendSuccessfull = true; 

     MimeMessage mailMessage = mailSender.createMimeMessage(); 
     MimeMessageHelper helper = new MimeMessageHelper(mailMessage, "UTF-8"); 
     try { 
      helper.setFrom(from, emailMap.get("fromName")); 
      helper.setTo(to); 
      helper.setSubject(subject); 
      helper.setText(message, true); 
      mailSender.send(mailMessage); 
      logger.warn("SEND MAIL TO : " + to + " WITH SUBJECT " + subject 
       + " OK "); 
     } catch (Exception e) { 
      logger.error(e.getMessage(), e); 
      sendSuccessfull = false; 
     } 

     return sendSuccessfull; 
    } 

    public boolean send(String subject, String from, String[] to, String[] cc, String message) { 
     boolean sendSuccessfull = true; 

     MimeMessage mailMessage = mailSender.createMimeMessage(); 
     MimeMessageHelper helper = new MimeMessageHelper(mailMessage, "UTF-8"); 
     try { 
      helper.setFrom(from, emailMap.get("fromName")); 
      helper.setTo(to); 
      helper.setCc(cc); 
      helper.setSubject(subject); 
      helper.setText(message, true); 
      mailSender.send(mailMessage); 
      logger.warn("SEND MAIL TO : " + to + " WITH SUBJECT " + subject 
       + " OK "); 
     } catch (Exception e) { 
      logger.error(e.getMessage(), e); 
      sendSuccessfull = false; 
     } 

     return sendSuccessfull; 
    } 

    public boolean send(String subject, String from, String to, String cc, String message) { 
     boolean sendSuccessfull = true; 

     MimeMessage mailMessage = mailSender.createMimeMessage(); 
     MimeMessageHelper helper = new MimeMessageHelper(mailMessage, "UTF-8"); 
     try { 
      helper.setFrom(from, emailMap.get("fromName")); 
      helper.setTo(to); 
      helper.setCc(cc); 
      helper.setSubject(subject); 
      helper.setText(message, true); 
      mailSender.send(mailMessage); 
      logger.warn("SEND MAIL TO : " + to + " WITH SUBJECT " + subject 
       + " OK "); 
     } catch (Exception e) { 
      logger.error(e.getMessage(), e); 
      sendSuccessfull = false; 
     } 

     return sendSuccessfull; 
    } 

    public boolean send(String subject, String from, String[] to, String[] cc, 
     String message, ArrayList<String> attachmentfilenamelist, 
     ArrayList<String> attachmentfilewithpathlist) { 
     boolean sendSuccessfull = true; 

     MimeMessage mailMessage = mailSender.createMimeMessage(); 
     MimeMessageHelper helper; 
     try { 
      helper = new MimeMessageHelper(mailMessage, true, "UTF-8"); 
      helper.setFrom(from, emailMap.get("fromName")); 
      helper.setTo(to); 
      helper.setCc(cc); 
      helper.setSubject(subject); 
      helper.setText(message, true); 
      for (int i = 0; i < attachmentfilenamelist.size(); i++) { 
      helper.addAttachment(attachmentfilenamelist.get(i), 
       new FileDataSource(attachmentfilewithpathlist.get(i))); 
      } 
      mailSender.send(mailMessage); 
      logger.warn("SEND MAIL TO : " + to + " WITH SUBJECT " + subject 
       + " OK "); 
     } catch (Exception e) { 
      logger.error(e.getMessage(), e); 
      sendSuccessfull = false; 
     } 

     return sendSuccessfull; 
    } 

    public boolean sendFromUser(String subject, String from, String fromName, String []to, String message) { 
     boolean sendSuccessfull = true; 

     MimeMessage mailMessage = mailSender.createMimeMessage(); 
     MimeMessageHelper helper = new MimeMessageHelper(mailMessage, "UTF-8"); 
     String toAdresses = ""; 
     for (int i = 0; i < to.length; i++) { 
      if(i == 0) 
       toAdresses = to[i]; 
      else 
       toAdresses = toAdresses + ", " + to[i]; 
     } 
     try { 
      helper.setFrom(from, fromName); 
      helper.setTo(to); 
      helper.setSubject(subject); 
      helper.setText(message, true); 
      mailSender.send(mailMessage); 
      logger.warn("SEND MAIL TO : " + toAdresses + " WITH SUBJECT " + subject 
       + " OK "); 
     } catch (Exception e) { 
      logger.error(e.getMessage(), e); 
      sendSuccessfull = false; 
     } 

     return sendSuccessfull; 
    } 
} 
+1

Sie können die Protokollebene auf DEBUG gesetzt werden soll oder niedriger, um herauszufinden, warum Spring erstellt Ihre Bohne nicht. Ich sehe auch nicht den Import org.springframework.stereotype.Service; in ActivationMailService, aber Sie verwenden diese Annotation. Hast du das nur zu diesem Beitrag hinzugefügt? Wenn ja, funktioniert das nicht. –

+1

Ich denke, es gibt mehr zu dieser NoSuchBeanException. Es ist unmöglich, ohne den vollständigen Stacktrace zu sagen. Sie haben jedoch eine verdächtige @Autowired-Annotation auf einer HashMap in Ihrem ActivationService. Diese Autowire-Annotation wird sich höchstwahrscheinlich anders verhalten als erwartet. Wo ist die Definition dafür? – hyness

+0

@ Giovanni, Es ist Kopie einfügen Fehler. Ich habe import org.springframework.stereotype.Service hinzugefügt. Es ist nicht die Ursache von Fehlern. – user1662738

Antwort

7

Basierend auf Ausnahme:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.mail.javamail.JavaMailSenderImpl] 

es scheint, dass Frühling nicht Bohne in

injiziert werden finden
@Autowired 
JavaMailSenderImpl mailSender; 

in SendMail Klasse.

Sind Sie sicher, dass eine Bean der Klasse JavaMailSenderImpl definiert ist?

BTW Es ist ein wenig ungewöhnlich, dass eine Implementierungsklasse direkt (und nicht seine Schnittstelle) injiziert wird.

+0

Ich habe es geändert, aber immer noch denselben Fehler; @Autowired JavaMailSender mailSender; – user1662738

+0

@ user1662738 aber haben Sie überprüft, ob eine Bean definiert ist, die 'JavaMailSender' implementiert? Ich kann im Code, den Sie gepostet haben, nichts sehen. –

+1

hatte nur ein ähnliches Problem - es war, weil ich versuchte, die Implementierung und nicht die Schnittstelle zu autowire. Ich denke, dass die Verwendung der @Transactional-Annotation Spring Proxies erzeugt, damit Sie nicht immer das haben, was Sie zu haben glauben. Das Umschalten zum Autowidering der Schnittstelle hat es für mich behoben. – pauli

1

Die Methoden in der Service-Klasse sollte @Transactional

+0

Wenn die Klasse bereits mit @Transactional versehen ist, spielt sie für die Methoden keine Rolle. – Lobato

0

Schreib @Service („sendmail“) in Ihrer autowired Klasse kommentiert werden

Verwandte Themen