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)
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. –
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
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