我创建了一个简单的JavaMailSender spring-boot应用程序(只是为了好玩)。这是对GitHub上代码的引用:
https://github.com/carlcorder/mail.sender
我遇到一个问题,在Email类中,“from”属性为null,即使我用@Value注释它(除此之外,一切都很完美)。课程如下:
package com.mail.sender.domain;
import lombok.NonNull;
import org.springframework.beans.factory.annotation.Value;
@lombok.Data
@lombok.AllArgsConstructor
@lombok.NoArgsConstructor
@lombok.Builder
public class Email {
@NonNull
private String to;
@NonNull
//@Value("{spring.mail.username}") --> this is always null
private String from;
@NonNull
private String subject;
private String body;
}
我已阅读这些帖子,并了解问题很可能是相关的。
Difference between applicationContext.xml and spring-servlet.xml in Spring Framework
和此:
Spring @Value annotation in @Controller class not evaluating to value inside properties file
然而,我仍然无法得到任何工作。任何帮助将不胜感激。
答案 0 :(得分:1)
作为Deinum,在评论中提到,对于非Spring管理类,值不会被替换。
在您的情况下,由于您获得from
配置,因此您可以将字段移至MailSenderService
类。
您需要使用@Value
注释声明该字段。
同样如@ndrone所述,属性名称应以$。为前缀。
在MailSenderService中添加以下内容并将其从电子邮件类
中删除@Value("${spring.mail.username}")
private String from;