J'ai un client de démarrage de printemps qui consomme une api reposante. Au lieu de coder en dur l'adresse IP de l'API REST dans la classe Java, existe-t-il une entrée de clé dans le fichier application.properties que je puisse utiliser?).
Et si non, puis-je créer une entrée personnalisée?
Merci
L'infrastructure utilisée par Spring Boot peut être utilisée de la même manière dans votre propre projet. Vous avez commenté dans la réponse @zmitrok à propos d'un avertissement de "propriété inconnue". En effet, votre propriété n'a pas de méta-données, donc le IDE) n'est pas au courant.
Je vous conseillerais vivement de ne pas utiliser @Value
Si vous le pouvez car il est plutôt limité par rapport à ce que propose Spring Boot (@Value
Est une fonctionnalité de Spring Framework).
Commencez par créer des POJO pour votre IP:
@ConfigurationProperties("app.foo")
public class FooProperties {
/**
* IP of foo service used to blah.
*/
private String ip = 127.0.0.1;
// getter & setter
}
Ensuite, vous avez deux choix
@Component
Sur FooProperties
et activez le traitement des propriétés de configuration en ajoutant @EnableConfigurationProperties
À n’importe laquelle de vos classes @Configuration
(Cette dernière étape n’est plus nécessaire à partir de Botte de printemps 1.3.0.M3
)FooProperties
tel quel et ajoutez @EnableConfigurationProperties(FooProperties.class)
à l'une de vos classes @Configuration
, Ce qui créera automatiquement un bean Spring.Une fois que vous avez fait cela, app.foo.ip
Peut être utilisé dans application.properties
Et vous pouvez @Autowired
FooProperties
dans votre code pour rechercher la valeur de la propriété.
@Component
public MyRestClient {
private final FooProperties fooProperties;
@Autowired
public MyRestClient(FooProperties fooProperties) { ... }
public callFoo() {
String ip = this.fooProperties.getIp();
...
}
}
D'accord, votre clé est toujours jaune dans votre IDE. La dernière étape consiste à ajoutez une dépendance supplémentaire qui examinera votre code et générera les métadonnées pertinentes au moment de la construction . Ajoutez ce qui suit à votre pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
Et voilà, votre clé est reconnue, vous avez javadoc et le IDE vous donne la valeur par défaut (la valeur que vous avez initialisée sur le champ). Une fois que vous pouvez utiliser n'importe quel type de conversion les descripteurs de service (c.-à-d. URL
) et le javadoc sur le terrain sont utilisés pour générer la documentation de vos clés.
Vous pouvez également ajouter n'importe quelle validation de contrainte JSR-303
Sur votre champ (par exemple, une expression régulière pour vérifier que c'est une adresse IP valide).
Consultez ce projet exemple et la documentation pour plus de détails.
Au lieu de coder l’adresse IP dans le fichier de propriétés, vous pouvez démarrer l’application avec
-Dmy.property=127.127.10.20
Et Spring Boot le prendra automatiquement avec
@Value("${my.property}")
private String myProperty;
Vous pouvez ajouter vos propres entrées au fichier application.properties. Assurez-vous simplement que le nom de la propriété n'entre pas en conflit avec les propriétés communes répertoriées à l'adresse http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties =