226 votes

Différence entre l'utilisation de l'id et du nom du bean dans le fichier de configuration de Spring

Y a-t-il une différence entre l'utilisation d'un id et name sur un <bean> dans un fichier de configuration Spring ?

135voto

cletus Points 276888

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".

83voto

Duncan Points 22780

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.

52voto

pugmarx Points 1956

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é.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X