Emplacement @PropertySource facultatif
Je suis en utilisant le Printemps 3.2 dans une application web et j'aimerais avoir un .properties
fichier dans le chemin de la classe qui contient les valeurs par défaut. L'utilisateur doit être en mesure d'utiliser JNDI pour définir un emplacement où un autre .properties
est stocké qui remplace les valeurs par défaut.
Les ouvrages suivants, aussi longtemps que l'utilisateur a mis la configLocation
comme JNDI de la propriété.
@Configuration
@PropertySource({ "classpath:default.properties", "file:${java:comp/env/configLocation}/override.properties" })
public class AppConfig
{
}
Cependant, les remplacements doivent être facultatifs et doivent donc les JNDI de la propriété.
Actuellement j'obtiens une exception (java.io.FileNotFoundException: comp\env\configLocation\app.properties (The system cannot find the path specified)
lorsque le JNDI propriété est manquante.
Comment puis-je définir facultatif .properties
qui sont utilisés uniquement lorsque le JNDI de la propriété (configLocation
) est réglé? Est-ce même possible avec @PropertySource
ou est-il une autre solution?
source d'informationauteur Gerhard Schlager | 2013-07-01
Vous devez vous connecter pour publier un commentaire.
Essayez les solutions suivantes. Créer un
ApplicationContextInitializer
Dans un Contexte Web:
ApplicationContextInitializer<ConfigurableWebApplicationContext>
et de l'inscrire dans l'web.xml via:Dans le ContextInitializer vous pouvez ajouter votre propriété fichiers via classpath et le système de fichiers n'ai pas essayé de JNDI).
Le code ci-dessus tente de trouver un fichier de propriété par profil actif (voir: Comment définir printemps actif 3.1 profil d'environnement par l'intermédiaire d'un properites fichier et non pas via un env variable ou d'un système de propriété)
De Printemps 4, numéro SPR-8371 a été résolu. Par conséquent, la
@PropertySource
annotation a un nouvel attribut appeléignoreResourceNotFound
qui a été ajouté pour exactement cet effet. En outre, il ya aussi la nouvelle @PropertySources annotation qui permet implémentations comme:Si vous n'êtes pas encore sur Ressort 4 (voir matsev de la solution), voici un plus verbeux, mais à peu près équivalent solution: