我创建了一个简单的JavaMailSender弹簧引导应用程序(仅用于娱乐)。下面是对代码的引用在GitHub上:Spring @Value属性在自定义pojo中为null
https://github.com/carlcorder/mail.sender
我有一个问题,即电子邮件类中,“从”属性为空,即使我有@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
不过,我仍然无法得到任何工作。任何帮助将不胜感激。
删除它忘记了前面的'$''$ {spring.mail.username}' – ndrone
Ofcourse这将是'null'。它不是一个Spring管理的类,而是一个在该范围之外创建的对象(由Spring MVC类来绑定你的JSON)。这些对象不会被处理,因此'@ Value'不起作用。此外,为什么你想要在你的电子邮件类的属性,它应该属于你的服务作为属性,而不是作为传入的对象的一部分。 –
好的,谢谢你的解释。我认为该属性最好属于电子邮件域对象,因为Spring MailProperties的用户名属性始终是从application.properties传递的值。通过使用此值设置Email对象的“from”字段,可以更明确地指出该字段将/应该只有每个值都来自属性文件。 –