10
votes

Comment créer un haricot de chemin

J'ai besoin de mon contexte d'application de printemps pour inclure un haricot qui est un (Java 7) chemin code> objet, avec un nom de chemin fixe (connu). Quelle définition de haricot XML devrais-je utiliser?

Ce genre de haricot a des complications: p>

  • chemin code> est une interface et Les objets code> doivent être créés à l'aide de paths.get (chaîne ... ) code> Méthode d'usine statique. LI>
  • La méthode de l'usine statique a également une variante surchargée, paths.get (URI) code> . li> ul>

    comme objet is-a-a-a em> chemin code>, la classe code> du haricot doit être chemin code >:: p> xxx pré>

    Je dois indiquer la méthode d'usine statique à utiliser, ce qui semblerait nécessiter un attribut méthode d'usine code>. Mais la méthode d'usine appartient au java.nio.file.paths code> classe plutôt que le java.nio.file.path code> classe, donc je suppose que ce qui suit ne fonctionnerait pas: P>

     <bean name="myPath" class="java.nio.file.Path"
        factory-method="java.nio.file.Paths.get">
        <constructor-arg value="/my/path/name"/>
     </bean>
    


0 commentaires

4 Réponses :


-1
votes

Quelque chose comme ci-dessous devrait aider. XXX


1 commentaires

Nope: org.springframework.beans.bean.beancreationException: erreur création de haricots avec nom 'mypath' défini dans la ressource de chemin de classe [Spring.xml]: Aucune méthode d'usine correspondante trouvée: haricot d'usine 'PATHFactory'; Méthode d'usine 'Get ()' .



-1
votes

Essayez ceci:

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="staticMethod"><value>java.nio.file.Paths.get</value></property>
    <property name="arguments">
        <array>
            <value>/my/path/name</value>
            <array/>
        </array>
    </property>
</bean>


1 commentaires

Nope: org.springframework.beans.beansceptionException: erreur Création de haricots avec nom 'myPath' défini dans la ressource de chemin de classe [Spring.xml]: Aucune méthode d'usine de correspondance trouvée: Méthode d'usine 'Java.nio.file.Paths .get () '.



9
votes

Après quelques expériences avec Réponse de pingw33n , j'ai trouvé cela a fonctionné:

 <bean id="myPath" class="java.nio.file.Paths" factory-method="get">
    <constructor-arg value="/my/path" />
    <constructor-arg><array /></constructor-arg>
 </bean>
  • Donnez le nom de la classe em> usine em>, plutôt que la classe em> objet em>, comme valeur de la classe class code> attribue. li>
  • Donnez un tableau code> EXTRA EXTLEX CODE> Argument de constructeur, pour forcer la sélection de la surcharge correcte de la méthode d'usine. Cela évite de devoir faire le tour de la route de construire un fichier URI . Li> ul> p>


0 commentaires

0
votes

Eh bien, j'ai eu le même problème que vous, et ma solution était ... xxx

n'oubliez pas d'inclure l'espace de noms C sur votre fichier de configuration .xml


0 commentaires