Dans Spring Boot, nous avons résumé la méthode de liaison avec le fichier de propriétés.
Liez les propriétés suivantes aux champs Java.
application.properties
foo.intervel=1000
bar.intervel=500
Tout d'abord, créez une classe de contexte en spécifiant le playfix avec @ ConfigurationProperties
pour chaque playfix (foo, bar).
@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; //Vous pouvez spécifier la valeur par défaut ici
public int getIntervel() {
return intervel;
}
public void setIntervel(int intervel) {
this.intervel = intervel;
}
}
Après cela, vous pouvez enregistrer la classe de contexte dans DI.
@Configuration
public class PropertiesConfiguration {
@Bean
public FooContext fooConfig() {
return new FooContext();
}
@Bean
public BarContext barConfig() {
return new BarContext();
}
}
Obtenez la valeur de la propriété avec le sentiment suivant.
@Autowired
private FooContext fooContext;
@Autowired
private BarContext barContext;
public void test {
int fooIntervel = fooContext.getIntervel();
int barIntervel = barContext.getIntervel();
}
Dans le cas d'un cas de chameau, vous pouvez relier les mots avec des tirets ou laisser le chameau tel quel.
@ConfigurationProperties(prefix="foo")
public class FooContext {
private int itemName;
// getter & setter
}
application.properties
foo.item-name=apple
application.properties
foo.itemName=apple
Pour les listes et les tableaux, liez-vous aux propriétés avec la sensation suivante:
@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
Vous pouvez également l'écrire séparé par des virgules.
application.properties
foo.items=apple,banana,...
Dans le cas du type Map, liez à la propriété avec le sentiment suivant.
@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
Dans le cas d'un objet imbriqué, liez-le à la propriété avec le sentiment suivant.
@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
Il en va de même pour la liste + l'imbrication.
@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
Utilisez @ PropertySources
pour spécifier plusieurs fichiers de propriétés dans le chemin de classe.
@SpringBootApplication
@PropertySources({
@PropertySource("classpath:application.properties"),
@PropertySource("classpath:another.properties")
})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Lorsque vous utilisez un fichier de propriétés externe, spécifiez le chemin du fichier sur la ligne de commande de démarrage.
java -jar demo.jar --spring.config.location="file:/tmp/properties/application.properties"
Recommended Posts