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...
3 réponses
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.
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
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é.
De nouvelles questions
java
Java est un langage de programmation de haut niveau. Utilisez cette balise lorsque vous rencontrez des problèmes pour utiliser ou comprendre la langue elle-même. Cette balise est rarement utilisée seule et est le plus souvent utilisée en conjonction avec [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] et [maven].