Y a-t-il une différence entre l'utilisation d'un id
et name
sur un <bean>
dans un fichier de configuration Spring ?
Réponses
Trop de publicités?De la Référence du printemps , 3.2.3.1 Nommer les haricots :
Chaque haricot possède un ou plusieurs identifiants (également également appelés identifiants ou noms ; ces termes désignent la même chose). Ces ids doivent être uniques au sein du conteneur dans lequel le bean est hébergé. A bean n'aura presque toujours qu'un seul mais si un bean a plus d'un id un bean, les identifiants supplémentaires peuvent être considérés comme des alias.
Lorsque vous utilisez des métadonnées de configuration basées sur XML, vous utilisez les attributs 'id' ou 'name'. pour spécifier le(s) identifiant(s) du bean pour spécifier le ou les identifiants du bean. L'attribut "id" permet vous permet de spécifier exactement un id, et comme il s'agit d'un véritable élément XML ID d'un élément XML, l'analyseur XML est capable de faire une validation supplémentaire lorsque d'autres éléments font référence à l'id ; en tant que tel, c'est est la manière préférée de spécifier un bean d'un bean. Cependant, la spécification XML limite les caractères qui sont légaux dans les identifiants XML. Ceci n'est généralement pas une contrainte, mais si vous avez un besoin d'utiliser un de ces caractères XML spéciaux spéciaux, ou si vous voulez introduire d'autres alias pour le bean, vous pouvez également ou à la place spécifier un ou plusieurs ids de bean, séparés par une virgule (,), un point-virgule ( ;), ou un espace dans l'attribut 'name'. dans l'attribut "name".
Donc, en gros, le id
est conforme aux normes relatives à l'attribut id de XML, tandis que l'attribut name
est un peu plus souple. D'une manière générale, j'utilise name
presque exclusivement. Cela semble plus "printanier".
Depuis Spring 3.1, le id
est un attribut xsd:string
et autorise la même gamme de caractères que l'option name
attribut.
La seule différence entre un id
et un name
est qu'un name
peut contenir plusieurs alias séparés par une virgule, un point-virgule ou un espace, alors qu'un fichier id
doit être une valeur unique.
Extrait de la documentation de Spring 3.2 :
Dans les métadonnées de configuration basées sur XML, vous utilisez les attributs id et/ou name pour spécifier le ou les identifiants du bean. L'attribut id vous permet de spécifier exactement un id. Par convention, ces noms sont alphanumériques ('myBean', 'fooService', etc.), mais peuvent également contenir des caractères spéciaux. Si vous souhaitez introduire d'autres alias pour le bean, vous pouvez également les spécifier dans l'attribut name, séparés par une virgule (,), un point-virgule ( ;) ou un espace. Pour mémoire, dans les versions antérieures à Spring 3.1, l'attribut id était typé xsd:ID, ce qui limitait les caractères possibles. A partir de la version 3.1, il est maintenant xsd:string. Notez que l'unicité de l'identifiant du bean est toujours appliquée par le conteneur, mais plus par les analyseurs XML.
L'un ou l'autre fonctionnerait. Cela dépend de vos besoins :
Si l'identifiant de votre haricot contient un ou plusieurs caractères spéciaux, par exemple ( /viewSummary.html
), il ne sera pas autorisé comme le haricot id
car il ne s'agit pas d'un ID XML valide. Dans ce cas, vous pouvez sauter la définition du bean id
et fournir le haricot name
à la place.
Le site name
permet également de définir alias
es pour votre bean, puisqu'il permet de spécifier plusieurs identifiants pour un bean donné.