Ich versuche, eine Yml-Datei wie folgt zu lesen.@Value kann lesen, aber @ConfigurationProperties kann nicht
order:
foo: 5000
bar: 12
und ich kann es mit @value
lesen. (Ich verwende Lombok btw)
@Component
@Data
public class WebConfigProperty {
private Integer foo;
private Integer bar;
public WebConfigProperty(@Value("${order.foo}") @NonNull final Integer foo,
@Value("${order.bar}") @NonNull final Integer bar) {
super();
this.foo = foo;
this.bar = bar;
}
}
Ich versuche @ConfigurationProperties
zu verwenden, da die yml Datei mehr komplexiert sein wird. Aber es funktioniert nicht mit @ConfigurationProperties
.
@Component
@ConfigurationProperties("order")
@Data
public class WebConfigProperty {
@NonNull
private Integer foo;
@NonNull
private Integer bar;
}
Ich habe auch @EnableConfigurationProperties
in einer Config-Klasse. Alle Anmerkungen in der Konfiguration sind wie folgt.
@SpringBootConfiguration
@EnableConfigurationProperties
@EnableAutoConfiguration(exclude = { ... })
@ComponentScan(basePackages = { ... })
@Import({ ... })
@EnableCaching
Fehlermeldungen sind wie folgt.
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in {...}.WebConfigProperty required a bean of type 'java.lang.Integer' that could not be found.
Action:
Consider defining a bean of type 'java.lang.Integer' in your configuration.
Es scheint, wie Frühling kann nicht die yml Datei finden und zu versuchen, NULL-Werte in die WebConfigProperty
Felder zu setzen. Ich weiß nicht warum.
FYI, dies ist eine Multi-Projekt-Anwendung mit Gradle. Die XML-Datei und eine Konfigurationsklasse (nicht geschrieben) befinden sich im selben Projekt. WebConfigProperty
ist auf einem anderen Projekt.
BEARBEITEN: Basierend auf @ Yannic Klem Antwort, diese zwei arbeiteten.
@Component
@ConfigurationProperties("order")
@Getter
@Setter
@EqualsAndHashCode
public class WebConfigProperty {
@NonNull
private Integer foo;
@NonNull
private Integer bar;
}
//OR
@Component
@ConfigurationProperties("order")
@Data
@NoArgsConstructor
public class WebConfigProperty {
@NonNull
private Integer foo;
@NonNull
private Integer bar;
}
Ich denke, das Problem ist die '@ Data' Anmerkung. Ich habe eine Antwort gegeben, aber ich kann es im Moment nicht überprüfen. Sag mir, wenn es nicht die '@ Data' Annotation ist –
Probiere' @ Getter' und '@ Setter' explizit anstelle von' @Data' – pvpkiran
Könntest du es mit '@ConfigurationProperties (prefix =" order ") versuchen'? –