2016-08-03 2 views
2

Je souhaite injecter le résultat de l'appel de méthode à ma classe. J'ai le code suivant:Comment utiliser SpEL pour injecter le résultat de l'appel de méthode au printemps?

class Example { 
    private static final String NAME = "name"; 

    // #1 
    @Autowired 
    @Qualifier("a.b") 
    private B b;  

    // #2 
    @Autowired 
    @Qualifier("#{a.b}") 
    private B b; 

    // #3 
    @Autowired 
    @Qualifier("#{a.b.getC('" + NAME + "')}") 
    private C c; 
} 

J'ai donc 3 variantes différentes. Le premier fonctionne, le deuxième ne fonctionne pas, mais je ne sais pas si j'ai écrit correctement Spel et le troisième ne fonctionne pas aussi.

En fait ce dont j'ai besoin est la troisième variante. J'ai besoin d'injecter le résultat de la méthode d'appel "getC (nom)" sur le bean appelé "a.b"

Peut-être que quelqu'un a eu un problème similaire et sait comment le faire?

+0

Peut-être que cela peut vous être utile: http://stackoverflow.com/questions/19225115/how-to-do-conditionnel-auto-câblage-au-printemps –

Répondre

0

Vous ne pouvez pas utiliser SpringEL dans @ Qualifier et vous ne pouvez utiliser la constante que dans SpringEL.

inject résultat de la méthode d'appel "getc (nom)" sur le haricot appelé "ab" comme ceci:

@Bean(name="a.b") 
private B b(){ 
    return getC(name); 
}