In meiner Feder Boot-Anwendung zu laden, ich habe folgende Konfiguration:Im Frühjahr Boot wie ein yml Abschnitt als java.util.Properties
server:
host: a.com
port: 5922
enable-log: true
Ich mag die oben als java.util.Properties
lesen. Ich habe versucht Putting folgende Klasse:
@ConfigurationProperties(prefix = "server")
public class ServerConfig {
private Properties serverProps;
// ... Getter/setter
}
Die Boot-Konfigurationsdateien wie folgt aussehen:
@Configuration
@ComponentScan("com.demo")
@EnableAspectJAutoProxy(proxyTargetClass = true)
@EnableConfigurationProperties({ServerConfig.class})
@Profile({"dev"})
public class TestAppConfiguration {
}
@EnableAutoConfiguration
@SpringBootApplication
public class TestAppInitializer {
public static void main(final String[] args) {
SpringApplication.run(TestAppInitializer.class, args);
}
}
Unit-Test-Klasse:
@SpringApplicationConfiguration(classes = {TestAppInitializer.class})
@ActiveProfiles("dev")
public class ServerConfigTest extends AbstractTestNGSpringContextTests {
@Autowired
private ServerConfig serverConfig;
@Test
public void printDetails() {
logger.debug("ServerConfig.properties --> {}", serverConfig.getProperties());
}
}
Der Ausgang ist ServerConfig.properties --> null
.
Ich bin mir nicht sicher, warum das passiert. Die einzige Idee, die mir in den Sinn kommt, ist, dass die Konfigurationsparameter unter server
im Grunde flache Strings sind. Gibt es eine Möglichkeit, die ich als Properties
lesen kann?
Sie nicht properies zu java.util.Properties-Klasse ConfigurationProperties Anmerkung lesen kann. Sie können sie in einfache Klassenvariable wie String/Integer/Boolean usw. lesen. –
Hi @Niranjan, haben Sie einen Weg gefunden, die Werte im Properties-Objekt direkt zu setzen? wir können immer Felder erstellen und sie zum Eigenschaftsobjekt – Tatha