Ich habe eine einfache JavaMailSender Spring-Boot-Anwendung (nur zum Spaß) erstellt. Hier ist ein Verweis auf den Code auf GitHub:Spring @ Value-Eigenschaft ist Null in benutzerdefinierten Pojo
https://github.com/carlcorder/mail.sender
Ich habe ein Problem, bei dem in der E-Mail-Klasse, die „von“ Eigenschaft null ist, auch wenn ich mit Anmerkungen versehen es mit @Value (abgesehen davon, alles funktioniert perfekt). Die Klasse ist wie folgt:
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;
}
Ich habe diese Posts gelesen und verstehe das Problem am ehesten verwandt ist.
Difference between applicationContext.xml and spring-servlet.xml in Spring Framework
und diese:
Spring @Value annotation in @Controller class not evaluating to value inside properties file
Allerdings war ich noch nicht alles zum Laufen zu bringen. Jede Hilfe würde sehr geschätzt werden.
vergessen die '$' vor '$ {spring.mail.username}' – ndrone
Ofcourse wird es 'null' sein. Es handelt sich nicht um eine federverwaltete Klasse, sondern um ein Objekt, das außerhalb dieses Bereichs erstellt wurde (von den Spring mVC-Klassen zum Binden Ihres JSON). Diese Objekte werden nicht verarbeitet und so funktioniert '@ Value' nicht. Auch warum möchten Sie, dass diese Eigenschaft in Ihrer E-Mail-Klasse, sollte es in Ihrem Dienst als eine Eigenschaft gehören nicht als Teil des Objekts, das übergeben wird. –
Ok, danke für Ihre Erklärung. Ich dachte, dass die Eigenschaft am besten zum Domänenobjekt E-Mail gehört, da die Eigenschaft mailProperties username immer der Wert ist, der von application.properties übergeben wird. Durch Setzen des "from" -Feldes auf das Email-Objekt mit diesem Wert wäre es expliziter, dass dieses Feld nur einen Wert hat/sollte, der aus der Eigenschaftendatei kommt. –