Ich habe eine application.yml
-Datei, die im Innern ruft eine EigenschaftFrühling Boot-Ladeeigenschaften innerhalb yaml Datei Datei
Datei Wenn in meinem IDE Ausführung (Eclipse) Ich habe kein Problem, aber wenn das Glas in der Konsole ausgeführt wird (mit Java - jar) Es lädt nicht die Eigenschaftendatei, die in der YAML-Datei festgelegt ist. Hier
ist mein application.yml
:
apache:
kafka:
producer:
properties: kafka-producer-${application.environment}.properties
consumer:
properties: kafka-consumer-${application.environment}.properties
und hier die .properties
:
#
# Apache Kafka Consumer Properties
##
bootstrap.servers=XXXX:9092
group.id=consumers
enable.auto.commit=true
auto.commit.interval.ms=1000
key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
session.timeout.ms=300000
request.timeout.ms=305000
Ich lade die Eigenschaften wie diese Datei:
@Value("${apache.kafka.producer.properties}")
private String kafkaProducerProperties;
@Bean
public KafkaProducer<String, String> eventProducer() {
try {
Properties properties = new Properties();
properties.load(this.context.getResource("classpath:" + this.kafkaProducerProperties).getInputStream());
return new KafkaProducer<String, String>(properties);
} catch (final IOException exception) {
LOG.error("Error loading Kafka producer properties", exception);
}
return null;
}
in der IDE ausgeführt wird, Die this.kafkaProducerProperties
hat den richtigen Wert, während die Ausführung der jar ist n ull.
Was mache ich falsch und warum lädt es direkt in der IDE, aber nicht das Glas?
Sie scheinen einige Missverständnisse über YAML-Dateien/Dokumente zu haben. Es gibt nichts in der YAML-Spezifikation, so dass es eine Eigenschaftendatei aufruft. Das alles erledigt das Programm beim Laden der YAML-Datei. Sie könnten genauso gut sagen: "Ich habe eine Menge von UTF-8-Zeichen, die Inside eine Eigenschaftendatei aufruft", macht so wenig Sinn wie zu sagen, dass die YAML-Datei dies tut. – Anthon
Vielleicht sind die Wörter nicht korrekt, Sie können Anrufe für beziehen, wenn es für Sie besser klingt. Aber das Problem, ich denke, es ist gut erklärt und Sie haben keine Hilfe mit Ihrer Antwort – ilozano
Die richtigen Worte sind wichtig. Und dein Problem ist nicht gut erklärt. Im zweiten Abschnitt beginnen Sie mit 'Beim Ausführen ': Ausführen was? Sie haben zuvor nur eine YAML-Datei eingeführt, die nicht ausführbar ist. Gleich darauf beziehen Sie sich auf '* the * jar' (Hervorhebung von mir). Auf welches Glas beziehen Sie sich mit * dem *? Bis dahin hast du kein Glas eingeführt, auf das du dich beziehen kannst. Dein Post beginnt also mit Kauderwelsch für Uneingeweihte. Ich habe deinen schwer verständlichen Beitrag bereits verbessert, indem ich das unpassende Tag entfernt habe und mir die Zeit genommen habe zu erklären, warum das nötig war. Nicht helfend? – Anthon