Documentado aquí dice
Este prefijo especial especifica que se deben obtener todos los recursos de classpath que coinciden con el nombre dado (internamente, esto sucede esencialmente a través de una llamada ClassLoader.getResources (...)), y luego se fusionan para formar la definición final del contexto de la aplicación.
¿Alguien puede explicar esto?
¿Cuál es la diferencia entre usar classpath*:conf/appContext.xml
en lugar de classpath:conf/appContext.xml
sin el asterisco?
Respuestas:
DEFINICIÓN SIMPLE
El
classpath*:conf/appContext.xml
simplemente significa que todos los archivos appContext.xml bajoconf
carpetas en todos sus frascos en la ruta de clase serán recogidos y se unieron en un solo contexto de aplicación grande.Por el contrario,
classpath:conf/appContext.xml
cargará solo uno de esos archivos ... el primero encontrado en su classpath.fuente
La
classpath*:...
sintaxis es útil principalmente cuando desea crear un contexto de aplicación a partir de múltiples archivos de definición de bean, utilizando la sintaxis comodín.Por ejemplo, si construye su contexto utilizando
classpath*:appContext.xml
, el classpath será escaneado para cada recurso llamadoappContext.xml
en el classpath, y las definiciones de bean de todos ellos se fusionaron en un solo contexto.Por el contrario,
classpath:conf/appContext.xml
obtendrá uno y solo un archivo llamadoappContext.xml
desde el classpath. Si hay más de uno, los demás serán ignorados.fuente
classpath *: se refiere a una lista de recursos y carga todos los archivos presentes en el classpath y la lista puede estar vacía y si no hay ningún archivo presente en el classpath, la aplicación no arroja ninguna excepción (simplemente ignora el error).
classpath: se refiere a un determinado recurso y carga solo el primer archivo encontrado en el classpath y, si no hay ningún archivo en el classpath, arrojará una excepción
fuente
Resource
, ya que un recurso apunta a un solo recurso a la vez". Además, acabo de recibir este extraño error, así es como terminé aquí. Si va a importar recursos, entonces no tiene sentido usar el prefijo comodín classpath.El código fuente de Spring:
fuente