2016-03-30 2 views
3

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?

+1

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. –

+0

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

Antwort

1

AFAIK, Sie können sie nicht in java.util.Properties mit Annotation @ConfigurationProperties laden.

Sie müssen diese erstellen:

@Component 
@ConfigurationProperties(prefix = "server") 
public class ServerConfig { 
    private String host; 
    private String port; 
    private String enableLog; 
    // ... Getter/setter 
} 
+0

hinzufügen, das ich bereits getan hatte; aber ich habe die Frage gestellt, ob jemand "Eigenschaften" gemacht hat. Wie auch immer, danke fürs Teilen. – Niranjan

Verwandte Themen