Spring @Value属性在自定义pojo

时间:2016-07-08 02:50:58

标签: properties spring-boot null

我创建了一个简单的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

然而,我仍然无法得到任何工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

作为Deinum,在评论中提到,对于非Spring管理类,值不会被替换。

在您的情况下,由于您获得from配置,因此您可以将字段移至MailSenderService类。

您需要使用@Value注释声明该字段。 同样如@ndrone所述,属性名称应以$。为前缀。

在MailSenderService中添加以下内容并将其从电子邮件类

中删除
@Value("${spring.mail.username}")
private String from;