Existe alguma diferença entre usar um id
atributo e um name
atributo em um <bean>
elemento em um arquivo de configuração do Spring?
spring
configuration
Duncan Jones
fonte
fonte
Respostas:
A partir da referência do Spring , 3.2.3.1 Naming Beans :
Então, basicamente, o
id
atributo está em conformidade com os padrões de atributo de identificação XML, enquantoname
é um pouco mais flexível. De um modo geral, eu usoname
praticamente exclusivamente. Parece apenas mais "primavera-y".fonte
Desde a Primavera 3.1, o
id
atributo é umxsd:string
e permite o mesmo intervalo de caracteres que oname
atributo.A única diferença entre an
id
e aname
é que aname
pode conter vários aliases separados por vírgula, ponto e vírgula ou espaço em branco, enquanto que umid
deve ser um valor único.Na documentação do Spring 3.2:
fonte
Qualquer um funcionaria. Depende de suas necessidades:
se o identificador de seu bean contiver caracteres especiais, por exemplo (
/viewSummary.html
), ele não será permitido como o beanid
, porque não é um ID XML válido. Nesses casos, você pode pular a definição do beanid
e fornecê-loname
.O
name
atributo também ajuda na definição dealias
es para seu bean, pois permite especificar vários identificadores para um determinado bean.fonte
Existem poucas pequenas diferenças, como usar id lançará uma exceção se não for tratado adequadamente.
deixe-me responder abaixo pergunta
Não há diferença. você experimentará o mesmo efeito quando id ou nome for usado em uma tag <bean>.
Quão?
Os atributos id e name estão nos fornecendo um meio de fornecer valor de identificador a um bean (neste momento, pense id significa id, mas não identificador). Nos dois casos, você verá o mesmo resultado se ligar
applicationContext.getBean("bean-identifier");
.Tome @Bean, o equivalente java da tag <bean>, você não encontrará um atributo id. você pode atribuir seu valor de identificador ao @Bean apenas por meio do atributo name.
Deixe-me explicar através de um exemplo:
Pegue este arquivo de configuração, vamos chamá-lo como spring1.xml
Spring retorna o objeto Foo para
Foo f = (Foo) context.getBean("foo");
,. Substituaid="foo"
porname="foo"
no spring1.xml acima, você ainda verá o mesmo resultado.Defina sua configuração xml como,
Você receberá BeanDefinitionParsingException. Ele dirá que o nome do bean 'fooIdentifier' já está sendo usado nesse elemento. A propósito, esta é a mesma exceção que você verá se tiver abaixo da configuração
<bean name = "fooIdentifier" class = "com.intertech.Foo"> </bean>
<bean name = "fooIdentifier" class = "com. intertech.Foo "> </bean>
Se você mantiver id e nome na tag do bean, diz-se que o bean possui 2 identificadores. você pode obter o mesmo bean com qualquer identificador. tomar configuração como
o código a seguir imprime true
fonte
Existe diferença na definição de ID e nome no xml do ApplicationContext? Não A partir de 3.1 (spring), id também é definido como um tipo xsd: string. Isso significa que os caracteres permitidos na definição do nome também são permitidos no ID. Isso não era possível antes da Primavera 3.1.
Por que usar o nome quando é o mesmo que Id? É útil para algumas situações, como permitir que cada componente em um aplicativo se refira a uma dependência comum usando um nome de bean específico para esse componente.
fonte
Ambos
id
ename
são identificadores de feijão na mola COI recipiente / ApplicationContecxt. Oid
atributo permite especificar exatamente um ID, mas usando oname
atributo, você pode atribuir um nome alternativo a esse bean.Você pode conferir o documento da primavera aqui.
fonte