je besoin de quelque chose comme:Comment puis-je nommer @Service avec plusieurs noms au printemps?
@Named({"bean1", "bean2"})
@Service({"bean1", "bean2"})
quelqu'un peut me aider?
je besoin de quelque chose comme:Comment puis-je nommer @Service avec plusieurs noms au printemps?
@Named({"bean1", "bean2"})
@Service({"bean1", "bean2"})
quelqu'un peut me aider?
Pas directement, comme vous l'avez. Mais il est possible en redéfinissant un @Service
existant (ou @Component
) comme un @Bean
avec un nom ou une liste de noms, c'est possible.
@Service("Service-A")
public class SampleService {
public String doSomething() { return "Foo"; }
}
@Configuration
public class SampleConfig {
@Bean(name = {"Service-B", "Service-C"})
public SampleService createMirroredService(@Autowired SampleService service) {
return service;
}
}
Et maintenant, vous avez trois cas de SampleService
: Service-A
(votre @Service
), Service-B
et Service-C
. Cela fonctionne parce que vous en définissez un et que la méthode annotée @Bean
passe à travers l'implémentation, ce qui a pour effet de créer des alias. Assurez-vous que la classe de configuration est sélectionnée dans l'analyse et que cela fonctionne correctement.
Remarque: Bien que cela fonctionne, et il existe probablement d'autres solutions, je ne peux pas penser à un cas où j'aurais besoin de cela. Peut-être que si je m'intègre à une bibliothèque qui existe déjà, je ne peux pas changer. Mais il ne me semble pas un besoin sérieux pour cela, ou ils auraient fait value
sur @Component
un tableau.
J'ai besoin de cela pour un cas d'utilisation spécifique !!! Merci beaucoup mec... – Lucas
Pourquoi avez-vous besoin de cela? –
A avoir trois produits dans le même groupe. J'ai juste besoin d'un service pour le groupe mais je reçois le code du produit. La mise en place d'un service suffit donc à mes produits. J'utilise getBean (productId) alors j'ai besoin de plusieurs noms. – Lucas
Quelqu'un pourrait-il expliquer pourquoi voter vers le bas? Les gens ne veulent même pas expliquer et juste en bas ... – Lucas