Я пытаюсь использовать функцию электронной почты (в целях обучения) с помощью Spring.Вот фрагменты кода:
@Autowired
static
ApplicationContext applicationContext;
/**
* <p>
* Utility classes, which are collections of static members, are not meant to be
* instantiated. Even abstract utility classes, which can be extended, should
* not have public constructors.
*
* Java adds an implicit public constructor to every class which does not define
* at least one explicitly. Hence, at least one non-public constructor should be
* defined.
*
* </p>
*/
private EmailUtility() {
}
//@Autowired
//private static JavaMailSender mailSender;
public static void sendSimpleMessage(String to, String subject, String text, boolean trainTicket,
boolean flightTicket) throws MessagingException {
JavaMailSender mailSender = applicationContext.getBean("mailSender",JavaMailSenderImpl.class);
MimeMessage message = mailSender.createMimeMessage();
String pathToAttachment = "";
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text);
if (trainTicket && !flightTicket) {
pathToAttachment = AppConstants.TRAIN_TICKET_FILE;
} else if (!trainTicket && flightTicket) {
pathToAttachment = AppConstants.FLIGHT_TICKET_FILE;
}
if (Objects.nonNull(pathToAttachment) && !pathToAttachment.isEmpty()) {
FileSystemResource file = new FileSystemResource(new File(pathToAttachment));
helper.addAttachment("Ticket", file);
}
mailSender.send(message);
}
}
Контекст моего приложения:
<!-- Step 3: Add support for component scanning -->
<context:component-scan base-package="com.patcyy.vamonos" />
<!-- Step 4: Add support for conversion, formatting and validation support -->
<mvc:annotation-driven/>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="abcd.abcd.com"/>
<property name="port" value="2525"/>
<property name="username" value="admin@abcd.com"/>
<property name="password" value="test"/>
<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>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>
Я получаю исключение нулевого указателя при инициализации JavaMailSender.(В этой строке JavaMailSender mailSender = applicationContext.getBean ("mailSender", JavaMailSenderImpl.class);)
StackTrace:
java.lang.NullPointerException в com.patcyy.vamonos.utills.EmailUtilityсrefle.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.in.kej.hofMethod.java:498) в org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:209) в org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMethod.java:136) в org.springframe.HandMableHhodholetHervHerWholetHervServHortJava: 102) в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod (RequestMappingHandlerAdapter.java:891) в org.springframework.web.servlet.mv.andapHandleJava: 797) в org.springframework.web.servlet.mvc.method..web.servlet.DispatcherServlet..web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:877) в javax.servlet.http.HttpServlet.service (HttpServlet.java:660) в org.springframework.web.servlet.FrameworkSerjletServservice.ApplicationFilterChain.java:166) в org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:53) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChaap.g): org.catalina.core.: 96) в org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:490) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:139) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:92) в org.apache.catValal.veve.invoke (AbstractAccessLogValve.java:668) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:74) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:34).apache.coyote.http11.Http11Processor.service (Http11Processor.java:408) в org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) в org.apache.coyote.AbstractProtocol $ ConnectionHandler.cess $:770)в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1415) в org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) в java.util.concurrent.ThreadPoolExecutor.: 61) at java.lang.Thread.run (Thread.java:748)