est-il possible de faire quelque chose comme ceci: via des annotations sans créer une annotation personnalisée et peupler le champ par réflexion? Il ne peut pas être fait avec @Value, car il ne fonctionne qu'avec des chaînes ... p> Sinon, quelle est la meilleure façon de traiter des annotations personnalisées de haricot de printemps et une init la bean en conséquence? P> p>
3 Réponses :
Si je comprends la question, vous essayez de définir la valeur d'un champ qui est de fichier de type? Pourriez-vous simplement injecter le nom du fichier avec le @Value, puis créer l'objet de fichier dans le code si nécessaire? P>
Pas bon, le constructeur de fichiers s'attend à ce que l'exécution d'exécution absolue ou JVM, vous obtenez généralement des ressources de CLASSPATH ... je devrais aller comme "nouveau fichier (ce.class.getclassloader.getresource (" Fichier "). Touri ()) ; "... c'est juste une chose laide à faire ... Spring a un bon soutien comme CLASSPATHRESOURCE (String Path, Classloader Classloader) qui pourrait le gérer derrière la scène
Utilisez une ressource comme champ.
@Value("file:/some/resource/path/myTemplate.txt") Resource template;
Cool, BTW, Savez-vous comment prolonger / utiliser AutoWaireNotationBeanPostProcessor pour injecter des champs / méthodes ou les traiter d'une manière ou d'une autre, avec des annotations personnalisées?
Pouvez-vous me donner un exemple de ce que vous voulez faire?
Vous pouvez peut-être utiliser Testng - laissez-vous dire que vous avez une méthode ABC (A, B, C) qui doit être appelée à certaines valeurs ... Je l'annote avec @DataProviked annotation et créez une méthode de DataProvider correspondante ... et je voudrais AUTOWIRELNOTATIONBeanPostProcessor pour saisir l'annotation, exécuter la méthode de DataProvider et initialiser que ABC (A, B, C); Méthode ... C'est un scénario non-sens, qui peut être fait à la source normalement ... Je ne peux penser à rien de vrai maintenant :-) Le point important est, obtenez l'annotation et faire quelque chose, tout ce que vous voulez ...
Consultez cette question: Stackoverflow.com/questions/5337128/.../ a>
Vous auriez besoin de créer votre propre beanpostProcessor code> et devez-le fonctionner comme l'autre
* annotationbeanpostProcessor code> s.
Voir aussi cette Stackoverflow.com/Questtions/259140/... < / a>
Quel est le "templatepath"? BTW dans WebApp, si je vais comme ça @Value ("$ {classpath: web-inf / classes / exc-msg.properties}") Il ne recherche pas sur la classe de classe, mais à partir de la racine du contexte de l'application Web ... Vous savez comment travailler autour de cela?
@value ("$ {fichier: /some/resource/path/mytemplate.txt}") Modèle de ressources; P>
Merci pour le réveil, la réponse hautement évitée avait «Templatepath» sans aucune référence et est maintenant corrigée - voir les commentaires. P>
Le Javadoc ou les documents officiels pour @Value Les utilisateurs ont été difficiles à trouver au début de 2011 et sont toujours, de trouver comment les ressources peuvent être injectées via @Value Spel à l'aide de CLASSPATH, Fichier, URL: expressions spel , Ressources du système de fichiers , @Value , @ProperTyResource P>
Cela devrait être un commentaire