In Spring Boot haben wir die Bindungsmethode mit der Eigenschaftendatei zusammengefasst.
Binden Sie die folgenden Eigenschaften an Java-Felder.
application.properties
foo.intervel=1000
bar.intervel=500
Erstellen Sie zunächst eine Kontextklasse, indem Sie den Playfix mit "@ ConfigurationProperties" für jeden Playfix (foo, bar) angeben.
@ConfigurationProperties(prefix="foo")
public class FooContext {
private int intervel;
public int getIntervel() {
return intervel;
}
public void setIntervel(int intervel) {
this.intervel = intervel;
}
}
@ConfigurationProperties(prefix="bar")
public class BarContext {
private int intervel = 10; //Hier können Sie den Standardwert angeben
public int getIntervel() {
return intervel;
}
public void setIntervel(int intervel) {
this.intervel = intervel;
}
}
Danach können Sie die Kontextklasse in DI registrieren.
@Configuration
public class PropertiesConfiguration {
@Bean
public FooContext fooConfig() {
return new FooContext();
}
@Bean
public BarContext barConfig() {
return new BarContext();
}
}
Holen Sie sich den Immobilienwert mit folgendem Gefühl.
@Autowired
private FooContext fooContext;
@Autowired
private BarContext barContext;
public void test {
int fooIntervel = fooContext.getIntervel();
int barIntervel = barContext.getIntervel();
}
Im Fall eines Kamelfalls können Sie die Wörter mit Bindestrichen verbinden oder das Kamel so lassen, wie es ist.
@ConfigurationProperties(prefix="foo")
public class FooContext {
private int itemName;
// getter & setter
}
application.properties
foo.item-name=apple
application.properties
foo.itemName=apple
Binden Sie für Listen und Arrays mit dem folgenden Gefühl an Eigenschaften:
@ConfigurationProperties(prefix="foo")
public class FooContext {
private List<String> items; //or private String[] items;
// getter & setter
}
application.properties
foo.items[0]=apple
foo.items[1]=banana
Sie können es auch durch Kommas getrennt schreiben.
application.properties
foo.items=apple,banana,...
Binden Sie im Fall des Kartentyps mit dem folgenden Gefühl an die Eigenschaft.
@ConfigurationProperties(prefix="foo")
public class FooContext {
private Map<String, String> itemMap;
// getter & setter
}
application.properties
foo.item-map.key1=apple
foo.item-map.key2=banana
Binden Sie ein verschachteltes Objekt mit dem folgenden Gefühl an die Eigenschaft.
@ConfigurationProperties(prefix="foo")
public class FooContext {
private Product product;
// getter & setter
}
public class Product {
private String productId;
private String productName;
// getter & setter
application.properties
foo.product.product-id=001
foo.product.product-name=apple
Gleiches gilt für Liste + Verschachtelung.
@ConfigurationProperties(prefix="foo")
public class FooContext {
private List<Product> products;
// getter & setter
}
application.properties
foo.products[0].product-id=001
foo.products[0].product-name=apple
foo.products[1].product-id=002
foo.products[1].product-name=banana
Verwenden Sie "@ PropertySources", um mehrere Eigenschaftendateien im Klassenpfad anzugeben.
@SpringBootApplication
@PropertySources({
@PropertySource("classpath:application.properties"),
@PropertySource("classpath:another.properties")
})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Geben Sie bei Verwendung einer externen Eigenschaftendatei den Dateipfad in der Startbefehlszeile an.
java -jar demo.jar --spring.config.location="file:/tmp/properties/application.properties"