J'ai un fichier de propriétés avec beaucoup de valeurs et je ne veux pas les énumérer dans mon fichier de configuration de haricot séparément. Par exemple: et ainsi de suite. P> J'imagine à injecter complètement comme java.util.properties code> ou moins en tant que
java.util.map code>.
Y a-t-il un moyen de le faire? P> P>
5 Réponses :
Oui, vous pouvez utiliser voir Section C.2.2.3 du manuel de ressort et de leur exemple: p> N'oubliez pas de déclarer le
java.util.properties résultant code> comme un haricot. Vous pouvez ensuite injecter cela comme vous le feriez une autre propriété de haricot.
UTIL: CODE> Espace de noms selon Ces instructions . p> p>
Traiter est comme n'importe tel bean. Utilisez-le dans la configuration XML à l'aide de REF = MyProps CODE> ou AutoWire A Propriétés pour laisser le ressort s'en occuper pour vous.
Il est possible avec le «code> ProtitierverriDeconfigurier Code> Mécanisme:
beanname1.foo=foovalue beanname2.bar.baz=bazvalue
Merci de votre réponse - Ma faute, le fichier de propriétés sera édité par un "non-développeur" et doit être "facile à lire" pour l'éditeur sans fond particulier. Ainsi, les noms des haricots ne seraient pas la bonne façon d'utiliser comme clé.
pour java config, utilisez puis définissez l'objet Propriétés: P> PropriétésFactorybean code>:
@Bean
public AnotherBean myBean() {
AnotherBean myBean = new AnotherBean();
...
myBean.setProperties(myProperties());
...
}
Wow, c'est beaucoup de code. N'a-t-il pas un moyen plus facile comme la configuration XML 1-liner
@Rustyx Oh! Je n'ai pas trouvé à ce moment-là une autre façon de le faire, mais votre est très agréable! :)
pour java config, vous pouvez utiliser quelque chose comme ceci:
@Autowired @Qualifier("myProperties") private Properties myProps; @Bean(name="myProperties") public Properties getMyProperties() throws IOException { return PropertiesLoaderUtils.loadProperties( new ClassPathResource("/myProperties.properties")); }
Ceci est un écho de Réponse de @skaffman dans cette question. J'ajoute plus de détails pour aider les autres et moi-même quand j'essaie de résoudre ce problème à l'avenir.
Il existe trois façons d'injecter le fichier de propriétés p>
@Value("#{myProps[myPropName]}") private String myField;