2017-06-21 4 views
0

Ich schaffe Bean-Klasse von JavaMailSender und autowired die javamailsender aber ich Fehler immerWie erstellt man die Bohnenklasse im Frühling?

package com.websystique.springsecurity.service; 

import java.util.List; 

import javax.mail.MessagingException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.core.io.FileSystemResource; 
import org.springframework.mail.MailParseException; 
import org.springframework.mail.SimpleMailMessage; 
import org.springframework.mail.javamail.JavaMailSender; 
import org.springframework.mail.javamail.MimeMessageHelper; 
import org.springframework.stereotype.Service; 
import org.springframework.transaction.annotation.Transactional; 

import com.websystique.springsecurity.dao.EmployeeDao; 
import com.websystique.springsecurity.model.Employee; 

@Service 
@Transactional 
public class EmployeeServiceImpl implements EmployeeService { 

@Autowired 
private EmployeeDao employeeDAOImpl; 
Employee Employee; 
@Autowired 
private JavaMailSender mailSender; 
@Autowired 
private SimpleMailMessage simpleMailMessage; 
public void setMailSender(JavaMailSender mailSender) { 
    this.mailSender = mailSender; 
} 
@Transactional 
public void addEmployee(Employee employee) { 
    employeeDAOImpl.addEmployee(employee); 
    StringBuilder subject = new StringBuilder(); 
    subject.append("User "); 
    subject.append(employee.getFirstname()); 
    subject.append(" "); 
    subject.append(employee.getLastname()); 
    subject.append(" has been added"); 
    String content = subject.toString()+" Successfully!"; 
    sendMail("", content,subject.toString(),employee.getEmail(),"D:\\log.pdf"); 
} 

@Transactional 
public List<Employee> getAllEmployees() { 
    return employeeDAOImpl.getAllEmployees(); 
} 

@Transactional 
public void deleteEmployee(Integer employeeId) { 
    employeeDAOImpl.deleteEmployee(employeeId); 
} 
@Transactional 
public Employee getEmployee(int empid) { 
    return employeeDAOImpl.getEmployee(empid); 
} 
@Transactional 
public Employee updateEmployee(Employee employee) { 

    Employee emp = employeeDAOImpl.updateEmployee(employee); 
    StringBuilder subject = new StringBuilder(); 
    subject.append("User "); 
    subject.append(emp.getFirstname()); 
    subject.append(" "); 
    subject.append(emp.getLastname()); 
    subject.append(" has been updated"); 
    String content = subject.toString()+" Successfully!"; 
    sendMail("", content,subject.toString(),emp.getEmail(),"D:\\log.pdf"); 
    return emp; 
} 
@Transactional 
public void setEmployeeDAO(EmployeeDao employeeDAO) { 
    this.employeeDAOImpl = employeeDAO; 
} 
@Transactional 
public void sendMail(String dear, String content,String subject,String 
toEmail,String filePath) { 
MimeMessage message = mailSender.createMimeMessage(); 
    try{ 
     MimeMessageHelper helper = new MimeMessageHelper(message, true); 

     helper.setFrom(new InternetAddress("[email protected]")); 
     helper.setTo(new InternetAddress(toEmail)); 
     helper.setSubject(subject); 
     helper.setText(content); 
     if(filePath!=null){ 
     FileSystemResource file = new FileSystemResource(filePath); 

     helper.addAttachment(file.getFilename(), file); 
     } 

    }catch (MessagingException e) { 
     throw new MailParseException(e); 
    } 
    mailSender.send(message); 


} 

} 

Ich konnte die Bean-Klasse für bean id = „Mailsender“ nicht erstellen. Ich arbeite seit zwei Tagen daran, bitte hole mich raus.

<context:component-scan base- 
package="com.websystique.springsecurity.controller" /> 


<bean 
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="viewClass" 
value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

<mvc:resources mapping="/static/**" location="/static/" /> 

<mvc:annotation-driven conversion-service="conversionService"/> 

<bean id="conversionService" 
class="org.springframework.format.support.FormattingConversionService 
FactoryBean"> 

    <property name="converters"> 
     <list> 
      <bean id="roleToUserProfile" 
class="com.websystique.springsecurity.util.RoleToUserProfileConverter" /> 
     </list> 
    </property> 
</bean> 
    <bean id="mailSender" 
class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="smtp.gmail.com" /> 
    <property name="port" value="587" /> 
    <property name="username" value="[email protected]" /> 
    <property name="password" value="Saran2595" /> 

    <property name="javaMailProperties"> 
     <props> 
      <prop key="mail.transport.protocol">smtp</prop> 
      <prop key="mail.smtp.auth">true</prop> 
      <prop key="mail.smtp.starttls.enable">true</prop> 
     </props> 
    </property> 

</bean> 
<!-- 
<bean id="mailMail" class="com.mkyong.common.MailMail"> 
    <property name="mailSender" ref="mailSender" /> 
    <property name="simpleMailMessage" ref="customeMailMessage" /> 
</bean> 

<bean id="customeMailMessage" 
    class="org.springframework.mail.SimpleMailMessage"> 

    <property name="from" value="[email protected]" /> 
    <property name="subject" value="Customer Report" /> 
    <property name="text"> 
    <value> 
     <![CDATA[ 
      Dear %s, 
      Mail Content : %s 
     ]]> 
    </value> 
</property> 
</bean> --> 

</beans> 

Und Fehlerseite

org.springframework.beans.factory.BeanCreationException: Fehler Erstellen Bohne mit dem Namen 'employeeController': Die Injektion von autowired Abhängigkeiten fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Könnte nicht autowire Feld: privat com.websystique.springsecurity.service.EmployeeService com.websystique.springsecurity.controller.EmployeeController.employeeServiceImpl; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Fehler Erstellen Bean mit Name 'MitarbeiterServiceImpl': Injektion von Autowired Abhängigkeiten fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.beans.factory.BeanCreationException: Könnte nicht autowire Feld: privat org.springframework.mail.javamail.JavaMailSender com.websystique.springsecurity.service.EmployeeServiceImpl.mailSender; verschachtelte Ausnahme ist org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifizierenden bean vom Typ [org.springframework.mail.javamail.JavaMailSender] für Abhängigkeit gefunden: mindestens 1 bean zu erwarten, die als autowire Kandidat qualifiziert für diese Abhängigkeit. Dependency Anmerkungen: {@ org.springframework.beans.factory.annotation.Autowired (required = true)} bei org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues ​​(AutowiredAnnotationBeanPostProcessor.java:334) bei org .springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1214) bei org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:543) bei org.springframework.beans .factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:482) bei org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:305) bei org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) bei org. springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:301) bei org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:196) bei org.springframework.beans. factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:772) unter org.springframework.context.support.AbstractApplicationContext.finishBea nFactoryInitialization (AbstractApplicationContext.java:834) um org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:537) um org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext (ContextLoader.java:446) bei org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:328) bei org.springframework.web.context.ContextLoaderListener. contextInitialized (ContextLoaderListener.java:107) bei org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4853) bei org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5314) um org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:145) um org.apache.catalina.core.ContainerBase $ StartChild.c all (ContainerBase.java:1408) um org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1398) bei java.util.concurrent.FutureTask.run (FutureTask.java:266) um java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) bei java.lang.Thread.run (Thread. java: 745)

+0

Ihr Mail-Absender durch den 'DispatcherServlet' nicht die' ContextLoaderListener' erstellt wird. Ein 'DispatcherServlet' kann auf Beans von' ContextLoaderLIstener' zugreifen, aber nicht umgekehrt. Legen Sie es in die richtige XML-Datei. –

+0

Danke für Ihre Hilfe, aber ich wusste nicht, welche XML-Datei korrekt ist. Das Projekt enthält ApplicationContext.xml, spring-database.xml, dispactherservlets.xml und spring-sercurity.xml. Welche XML ist korrekt XML-Datei – saravana

+0

Ich bin neu zu Frühling so wusste nicht, wie Marshaller Xml zu erstellen, also, schlagen Sie bitte ein Beispiel für die Erstellung von Bean-Klasse – saravana

Antwort

0

Ihr Komponenten-Scan enthält nur com.websystique.springsecurity.controller. Es wird also nicht möglich sein, andere Pakete zu durchsuchen, um die Abhängigkeiten zu injizieren. Aktivieren Sie den Komponenten-Scan im obersten Paket (com.websystique.springsecurity) und überschreiben Sie die Bean-Definitionen (falls erforderlich) in der XML-Datei.

+0

Vielen Dank für Ihr Interesse, aber ich erwähne die Basis-Scan-Pakete (com.websbestique.springsecurity) in Application Context Xml-Datei – saravana

0

Versuchen Sie dies in Ihrem xml und wenn es funktioniert zurückkehren zurück

+0

Danke für Ihre Hilfe, es funktioniert – saravana

Verwandte Themen