tutorial traduccion tool framework ecosystem spring

tool - spring traduccion



Primavera-uso de alias vs nombres (5)

Alias ​​tiene un escenario de uso específico que varios nombres no tienen:

Imagine múltiples archivos xml de configuración en su proyecto, la mayoría de los cuales son creados por sus colegas, y necesita agregar su propio archivo config.xml. Al utilizarlo, podrá referirse a un bean definido en otro archivo de configuración con un nombre diferente que tal vez sea más significativo para su configuración, sin tener que tocar los archivos de configuración de sus colegas.

Estoy confundido sobre el uso de alias. Entiendo qué es el alias y cómo se usa, pero no veo cómo puede ser diferente de usar nombres en una definición de bean.

<bean id="xyx" name="abc,def" .. /> <alias name="xyx" alias="pqr"/>

¿Por qué el alias cuando puedo usar abc o def?


En mi opinión, el alias de frijol puede ser útil en sistemas grandes, donde no se pueden manipular nombres de frijoles. Tiene la opción de crear su propio nombre (alias) específico para su parte del sistema ...

de la documentación de Spring (3.0.x) http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/

... a veces es deseable darle a un solo bean múltiples nombres, también conocido como alias de bean ...

por lo tanto, crear nombres múltiples y / o aliasing es lo mismo.


Recientemente encontré otro caso de uso donde alias resolvió fácilmente un problema.

Cuando la configuración automática está activa, Spring Boot proporciona las bean serverProperties que se pueden usar para acceder a la información sobre el servidor que ejecuta actualmente la aplicación web.

En las pruebas de integración (es decir, cuando está presente la anotación @SpringBootTest ), el mismo bean está disponible con el nombre org.springframework.boot.autoconfigure.web.ServerProperties .

Por supuesto, es posible usar un perfil diferente para las pruebas de integración, pero eso requeriría un cambio manual de configuración en múltiples lugares. Sin embargo, simplemente agregando

<alias name="serverProperties" alias="org.springframework.boot.autoconfigure.web.ServerProperties"/>

los mismos archivos de configuración se pueden usar para pruebas de integración y en producción.

Esto podría ser un error en Spring Boot, sin embargo, alias resuelve fácilmente el problema sin esperar una nueva versión. Y ciertamente no tengo ninguna posibilidad de alterar la configuración de arranque yo mismo.


Un bean con alias siempre tendrá mayor prioridad que uno sin alias, y en caso de tener diferentes beans con el mismo alias, el último declarado tendrá la prioridad. En otras palabras, el bean aliasado anulará los beans sin alias. Esto puede ser particularmente útil cuando se crean grandes proyectos o cuando se construyen extensiones para su proyecto y no se desea tocar la definición original de bean.


Un caso de uso tal vez cuando desee personalizar algunos beans que ya están definidos en alguna parte de una aplicación modular (cada módulo es un proyecto de primavera, por ejemplo), el bean puede definirse por un framework / API de terceros o incluso su equipo. En ese caso, usted quiere que solo dentro de su proyecto de primavera, llame a la versión personalizada sin alterar otros módulos (proyectos), para hacer eso simplemente agregue el alias en su configuración de primavera, que de hecho es una característica poderosa:

<alias alias="globalBeanService" name="customizedBeanService" />

Por lo tanto, siempre que la primavera encuentre una llamada al servicioBean global, inyectará servicioBean personalizado para usted dentro de su módulo específico. ¡Sin esta característica, deberías pasar por todas las clases y modificar el bean manualmente!