2017-06-27 9 views
0

Hallo Gibt es einen einfachen Weg mit Spring-Boot, um in einem Schlüssel zu laden, Wert Eigenschaftendatei. Ich kann es auf die alte Weise tun, um die Eigenschaften-Klasse wollte aber prüfen, ob dies kann leicht mit Federverschluß (noch neu in dieser)Spring Boot Key, Wert Eigenschaftendatei

Danke,

Beispiel

A = Apple-

erfolgen

B = Banana usw.

+0

Ich bin mir nicht sicher, was Sie versuchen zu tun. Sie können jedoch die Datei application.properties oder application.yml verwenden, um Eigenschaften im Spring-Boot anzugeben. Wenn Sie das Projekt in einer IDE mit dem Initialisierer spring.io erstellen, werden application.yml und bootstrap.yml automatisch im Verzeichnis src/java/resources erstellt. – techtabu

Antwort

0

Ja. Wenn Sie eine Datei application.properties in src/main/resources/ benannter können Sie ihre Werte injizieren etwa so:

application.properties

foo=bar 

Foo.class

@Component 
public class Foo { 
    @Value("${foo}") 
    String foo; //equals 'bar' 
    //.......// 
} 

Alternativ können Sie nachschlagen Eigenschaften programmgesteuert

@SpringBootApplication 
public class PropertyLookupApplication { 

    public static void main(String[] args) { 
     ApplicationContext context = SpringApplication.run(PropertyLookupApplication.class, args); 
     String foo = context.getEnvironment().getProperty("foo"); //equals 'bar' 
    } 
} 

aktualisieren

Wenn Sie application.properties als Map wollen, dann können Sie sicherstellen, dass PropertiesLoaderUtils Dienstprogramm Klasse von Spring:

Resource resource = new ClassPathResource("application.properties"); 
Properties properties = PropertiesLoaderUtils.loadProperties(resource); 

, dass ein Standard java.util.Properties Objekt zurückgibt, die eine Karte ist.

+0

Danke vielleicht habe ich mich nicht richtig erklärt. . Ich möchte die externe Konfiguration als Nachschlagetabelle verwenden. Also hol mir den Wert für "A" oder was auch immer. Es könnte Hunderte von Schlüsselwerten geben, also möchte ich nicht den @ -Wert für jeden verwenden, wenn das sinnvoll ist. – helpme7766

+0

Sie können das immer noch mit application.properties als Nachschlagetabelle tun. Ermitteln Sie den ApplicationContext, und versuchen Sie Folgendes: context.getEnvironment(). GetProperty ("foo") und gibt "bar" zurück. Löst das dein Problem? –

+0

Nein. Ich weiß, dass ich application.properties in den Griff bekommen kann, das ist nicht die Frage, die ich stelle. Was ich verlange ist, dass es unbegrenzte "Foos" geben kann. Ich möchte nicht @value ("$ {foo}"), @value ("$ {foo100}") usw. machen. Ich möchte wissen, ob es eine Möglichkeit gibt, alle meine Eigenschaften auf einmal in ein zu lesen Karte? – helpme7766

Verwandte Themen