java - que - Diferencia de prefijo classpath de primavera
que diferencia hay entre i++ y++ i (3)
Documentado aquí indica
Este prefijo especial especifica que se deben obtener todos los recursos classpath que coinciden con el nombre dado (internamente, esto ocurre esencialmente a través de una llamada ClassLoader.getResources (...)), y luego se fusiona 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 oposición a classpath:conf/appContext.xml
sin el asterisco?
La sintaxis classpath*:...
es útil principalmente cuando se quiere construir un contexto de aplicación a partir de múltiples archivos de definición de bean, usando sintaxis comodín.
Por ejemplo, si construye su contexto usando classpath*:appContext.xml
, la classpath se escaneará para cada recurso llamado appContext.xml
en la classpath, y las definiciones de bean de todas ellas fusionadas en un solo contexto.
Por el contrario, classpath:conf/appContext.xml
obtendrá un solo archivo llamado appContext.xml
del classpath. Si hay más de uno, los demás serán ignorados.
DEFINICIÓN SIMPLE
El classpath*:conf/appContext.xml
simplemente significa que todos los archivos appContext.xml bajo las carpetas conf
en todos sus archivos jar en el classpath serán recogidos y unidos en un contexto de aplicación grande.
Por el contrario, classpath:conf/appContext.xml
solo cargará uno de esos archivos ... el primero encontrado en su classpath.
classpath *: Hace referencia a una lista de recursos y carga todos esos archivos presentes en la ruta de clase y la lista puede estar vacía y si dicho archivo no está presente en la ruta de clases, entonces la aplicación no lanza ninguna excepción (simplemente ignora el error).
classpath: se refiere a un recurso determinado y carga solo el primer archivo encontrado en classpath y si dicho archivo no está presente en el classpath generará una excepción
java.io.FileNotFoundException: class path resource [conf/appContext.xml] cannot be opened because it does not exist