![](/img/trans.png)
[英]Getting NullPointerException while mocking in SpringBoot
[英]NullPointerException while send a otp mail using springboot
我正在尝试使用 springboot 发送 otp 邮件。 我已经创建了一个登录页面,邮件将从该页面提供给 sendotp()。 或者您可以提供有关如何使用 springboot 发送邮件 otp 的代码来提供帮助。 这是我的代码:
OtpController类 -
@Controller
public class OtpEmailController {
private EmailSenderService emailService;
Random random = new Random(1000);
@PostMapping("/send-otp")
public String sendOtp(@RequestParam("email") String email) {
int otp = random.nextInt(999999);
String subject = "OTP from session-handling-proj By Harshit";
String toEmail = email;
String body = "<h1> OTP = " + otp + "</h1>";
this.emailService.sendMail(toEmail, subject, body);
return ("success");
}
电子邮件发件人服务 class:
@Service
public class EmailSenderService {
@Autowired
private JavaMailSender mailSender;
public void sendMail(String toEmail,
String subject,
String body) {
SimpleMailMessage message=new SimpleMailMessage();
message.setFrom("growthgreek@gamil.com");
message.setTo(toEmail);
message.setText(body);
message.setSubject(subject);
mailSender.send(message);
System.out.println("message sent .....");
}
}
当我调用 sendOtp() 方法时,我在 springboot 中收到 NullPointerException 错误。
错误:
java.lang.NullPointerException: null
at com.example.sessionHandling.sessionHandling.controller.OtpEmailController.sendOtp(OtpEmailController.java:31) ~[classes/:na]
at com.example.sessionHandling.sessionHandling.controller.SessionHandlingController.loginUser(SessionHandlingController.java:65) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
.............
我知道 OtpController 中存在一些问题,但无法弄清楚我到底需要做什么。
您 controller 需要知道emailService
应该由 Spring 注入。
您可以添加@Autowired 注释:
@Autowired
private EmailSenderService emailService;
或者创建一个全参数构造函数
OtpEmailController(EmailSenderService emailService){
this.emailService = emailService;
}
因为 class 被标记为 @Controller,所以 Spring 将通过绑定解析所有参数的构造函数注入 bean。
使用第二种方法,您可以使 emailService 成为最终的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.