J'utilise le ressort. Je sais comment utiliser les données de propriétés dans une classe mais j'ai besoin de savoir comment donner le nom du composant à partir du fichier de propriétés.

@Component("componentName") // here I need to give my property instead of "componentName".
public class TestClass {

}

Je fais une recherche mais je ne trouve pas de sos! Aidez-moi, s'il vous plaît...

1
Mohanraj 27 nov. 2017 à 11:30

3 réponses

Meilleure réponse

J'ai peur que ce ne soit pas possible. Tous les noms donnés à @Controller, @Service et ainsi de suite doivent être définitifs / constants.

4
vegaasen 27 nov. 2017 à 08:34

Je ne sais pas si j'ai bien compris, à partir du printemps 3, vous pouvez utiliser Annotation @PropertySource pour externaliser votre configuration dans un fichier de propriétés. Et puis affichez les valeurs avec @Value

Si vous parlez de distinguer les beans de configuration, @Qualifier est ce que vous recherchez

0
Thamiar 27 nov. 2017 à 08:47

Si vous pouvez utiliser une configuration XML supplémentaire, utilisez la directive alias comme expliqué dans cette autre question:

<beans>
    <alias name="${service.class}" alias="Service"/>
    <context:property-placeholder location="example/app.properties"/>
    <context:component-scan base-package="example"/>
<beans>

Si vous devez utiliser uniquement la configuration Java, il existe un problème ouvert à ce sujet ici. Il n'est toujours pas résolu, donc pour la configuration strictement Java, la même chose n'est pas possible actuellement.

Si cela pose un problème, vous pouvez également enregistrer un bean par programme comme détaillé ici. Donc, vous feriez autowire une propriété et votre bean cible, implémentez BeanDefinitionRegistryPostProcessor et enregistrez votre bean dans le registre que vous obtenez en tant que paramètre en utilisant votre propriété.

0
eis 27 nov. 2017 à 09:07
47506608