Heim  >  Artikel  >  Java  >  So lesen Sie die Konfigurationsdatei für benutzerdefinierte Eigenschaften unter SpringBoot

So lesen Sie die Konfigurationsdatei für benutzerdefinierte Eigenschaften unter SpringBoot

WBOY
WBOYnach vorne
2023-05-13 22:43:112344Durchsuche

1. Erstellen Sie eine neue .properties-Datei in der Ressource.

Erstellen Sie einen neuen Konfigurationsordner im Ressourcenverzeichnis, erstellen Sie dann eine neue .properties-Datei und platzieren Sie sie im Ordner. Wie in der Abbildung remote.properties

So lesen Sie die Konfigurationsdatei für benutzerdefinierte Eigenschaften unter SpringBoot

2. Schreiben Sie die Konfigurationsdatei

remote.uploadFilesUrl=/resource/files/
remote.uploadPicUrl=/resource/pic/

3. Erstellen Sie eine neue Konfigurationsklasse remoteProperties.java

@Configuration
@ConfigurationProperties(prefix = "remote", ignoreUnknownFields = false)
@PropertySource("classpath:config/remote.properties")
@Data
@Component
public class RemoteProperties {
  private String uploadFilesUrl;
  private String uploadPicUrl;
}

darunter

@@ -Konfiguration zeigt an, dass dies ist eine Konfigurationsklasse
@ ConfigurationProperties(prefix = "remote",ignoreUnknownFields = false) Diese Annotation wird zum Binden von Eigenschaften verwendet. Mit „prefix“ wird das Präfix des Attributs ausgewählt, das in der Datei „remote.properties“ „remote“ ist. Mit „ignorUnknownFields“ wird SpringBoot angewiesen, eine Ausnahme auszulösen, wenn ein Attribut vorhanden ist, das nicht mit dem deklarierten Feld übereinstimmen kann.
@PropertySource("classpath:config/remote.properties") Konfigurationsdateipfad
@Data Dies ist eine Lombok-Annotation, die zum Generieren von Getter- und Setter-Methoden verwendet wird
@Komponente wird als Bean identifiziert

4. Wie verwende ich sie?

Annotieren Sie EnableConfigurationProperties(RemoteProperties.class)
in der Tabelle der Klasse, in der Sie die Konfigurationsdatei verwenden möchten, und fügen Sie automatisch

@Autowired
RemoteProperties remoteProperties;

Verwenden Sie remoteProperties.getUploadFilesUrl() in der Methode ein, um den Konfigurationsinhalt abzurufen.

@EnableConfigurationProperties(RemoteProperties.class)
@RestController
public class TestService{
  @Autowired
  RemoteProperties remoteProperties;

  public void test(){
    String str = remoteProperties.getUploadFilesUrl();
    System.out.println(str);
  }
}

Str hier ist „/resource/files/“ in der Konfigurationsdatei.

PS: Werfen wir einen Blick auf die beiden Möglichkeiten, die Konfigurationsdatei in Spring-Boot zu lesen.

Wer sich mit der Spring-Boot-Technologie auskennt, sollte die Kernkonfigurationsdatei application.properties von Spring-Boot kennen , können Sie auch die Informationen der benutzerdefinierten Konfigurationsdatei mit Anmerkungen versehen.

So liest Spring-Boot die Konfigurationsdatei:

1. Lesen Sie den Inhalt der Kernkonfigurationsdateiinformationen application.properties.

Die Kernkonfigurationsdatei bezieht sich auf die Konfiguration application.properties oder application.yml im Ressourcenstamm Verzeichnisdatei gibt es zwei Möglichkeiten, diese beiden Konfigurationsdateien zu lesen, die beide relativ einfach sind.

Der Inhalt der Kernkonfigurationsdatei application.properties lautet wie folgt:

test.msg=Hello World SpringBoot

Methode 1: Verwenden Sie die @Value-Methode (häufig verwendet)

package Solin.controller; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
@RestController 
public class WebController { 
  @Value("${test.msg}") 
  private String msg; 
  @RequestMapping("/index1")  
  public String index1(){ 
    return "方式一:"+msg; 
  } 
}

Hinweis: Das ${} in @Value enthält den Schlüsselnamen in die Kernkonfigurationsdatei. Das Hinzufügen von @RestController zur Controller-Klasse bedeutet, dass alle Ansichten in dieser Klasse in JSON angezeigt werden, ähnlich wie das Hinzufügen von @ResponseBody zur Ansichtsmethode.
Beim Zugriff auf: http://localhost:8088/index1 erhalten Sie: „Methode 1: Hello World SpringBoot“

Methode 2: Umgebungsmethode verwenden

package Solin.controller; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.core.env.Environment; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
@RestController 
public class WebController { 
  @Autowired 
  private Environment env; 
   
  @RequestMapping("/index2")  
  public String index2(){ 
    return "方式二:"+env.getProperty("test.msg"); 
  } 
}

Hinweis: Diese Methode wird zuvor durch die Abhängigkeitsinjektion von Evnironment vervollständigt Erstellen Fügen Sie die Annotation @Autowired zur Mitgliedsvariablen private Environment env hinzu, um die Abhängigkeitsinjektion abzuschließen, und verwenden Sie dann env.getProperty("key name"), um den entsprechenden Wert zu lesen.
Beim Zugriff auf: http://localhost:8088/index2 erhalten Sie: „Methode 2: Hello World SpringBoot“

2. Lesen Sie die Informationen der benutzerdefinierten Konfigurationsdatei, z. B.: author.properties

Um dies nicht zu tun Beschädigen Sie die ursprüngliche Ökologie der Kerndatei, benötigen Sie jedoch im Allgemeinen eine benutzerdefinierte Konfigurationsdatei, um diese benutzerdefinierten Informationen abzulegen. Erstellen Sie hier die Konfigurationsdatei „author.properties

resources/author.properties“ im Ressourcenverzeichnis . Der Inhalt lautet wie folgt:

author.name=Solin 
author.age=22

Erstellen Sie eine Entitätsklasse, die die Konfiguration verwaltet:

package Solin.controller; 
 
import org.springframework.boot.context.properties.ConfigurationProperties; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.stereotype.Component; 
 
//加上注释@Component,可以直接在其他地方使用@Autowired来创建其实例对象 
@Component 
@ConfigurationProperties(prefix = "author",locations = "classpath:author.properties")   
public class MyWebConfig{ 
  private String name; 
  private int age; 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
  public int getAge() { 
    return age; 
  } 
  public void setAge(int age) { 
    this.age = age; 
  } 
}

Hinweis:

Die Annotation @ConfigurationProperties enthält zwei Eigenschaften:

locations: Geben Sie den Speicherort der Konfigurationsdatei an
Präfix: Geben Sie den Schlüsselnamen in der Konfigurationsdatei an. Das Präfix (alle Schlüsselnamen in meiner Konfigurationsdatei hier beginnen mit Autor.)

Verwenden Sie @Component, um zu ermöglichen, dass die Klasse an anderen Stellen verwendet werden kann, d. h. @Autowired Anmerkung zum Erstellen von Instanzen.

Erstellen Sie einen Test-Controller

package Solin.controller; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
@Controller  
public class ConfigController { 
  @Autowired 
  private MyWebConfig conf; 
   
  @RequestMapping("/test")  
  public @ResponseBody String test() { 
    return "Name:"+conf.getName()+"---"+"Age:"+conf.getAge();  
  } 
}

Hinweis: Da die @Component-Annotation zur Conf-Klasse hinzugefügt wird, können Sie @Autowired hier direkt verwenden, um sein Instanzobjekt zu erstellen.

Beim Zugriff auf: http://localhost:8088/test erhielt ich: „Name:Solin---Alter:22“

Das obige ist der detaillierte Inhalt vonSo lesen Sie die Konfigurationsdatei für benutzerdefinierte Eigenschaften unter SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen