2016-07-03 10 views
0

Ich habe ein Mail-Dienstprogramm für mein Projekt geschrieben. Jetzt, wenn ich versuche zuFehler beim Erstellen der Bean

@Autowired 
EmailManager emailManager 

von meinem Usercontroller Ich erhalte die Fehlermeldung, dass der Bean nicht erstellt werden kann. hier bin ich die Anzeige der Code geschrieben in der Klasse Emailmanager

@Component 
public class EmailManager { 
    @Autowired 
    ApplicationContext appContext; 

    @Autowired 
    ThreadPoolTaskExecutor taskExecutor; 

    public Logger logger = Logger.getLogger(EmailManager.class); 

    public boolean sendChangePasswordNotification(String password,UserVO userVo) throws Exception{ 
     try { 
      logger.info("Send change password notification to " + userVo.getEmailId()); 

      String cc = PropertyUtil.getProperty("cc"); 
      logger.info("cc:"+cc); 

      HashMap<String,String> replaceKeyValue = new HashMap<String,String>(); 
      replaceKeyValue.put("username", userVo.getUsername()); 
      replaceKeyValue.put("password", password); 
      replaceKeyValue.put("firstName", userVo.getFirstName()); 

      HashMap<String,String> recipientMap = new HashMap<String,String>(); 
      recipientMap.put("to", userVo.getEmailId()); 
      recipientMap.put("cc", cc); 

      MailThread sender1 = (MailThread) appContext.getBean(MailThread.class); 
      sender1.setEmailOption(Constants.SEND_CHANGE_PASSWORD_NOTIFICATION); 
      sender1.setRecipientDetails(recipientMap); 
      sender1.setReplaceKeyValue(replaceKeyValue); 

      taskExecutor.execute(sender1); 
      logger.info("Sent change password notification to " + userVo.getEmailId()); 
     } catch (Exception e) { 
      logger.error("Error", e); 
      throw e; 
     } 
     return true; 
    } 
} 

Und hier ist die volle Stack-Trace, die ich auf Eclipse-Konsole bekam:

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 'emailManager': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor com.isynergy.tasktrac.notification.EmailManager.taskExecutor; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor] 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:326) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1204) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4772) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) 
    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: org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor com.isynergy.tasktrac.notification.EmailManager.taskExecutor; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor] 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:542) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:323) 
    ... 22 more 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor] 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:1261) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1009) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:904) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514) 

Wie kann ich dieses Problem jeder Vorschlag angehen?

Antwort

1

EmailManager kann nicht erstellt werden, da es eine Abhängigkeit für ThreadPoolTaskExecutor deklariert hat und keine anwendbaren Beans dieses Typs im Anwendungskontext vorhanden sind. Sie müssen eine Bean vom Typ ThreadPoolTaskExecutor für den Anwendungskontext erstellen.

+0

Woaah, Amazing ... Das löste mein Problem .. Danke .. !! – Vish

Verwandte Themen