La diferencia y aplicación práctica de spring classpath: y classpath*:
classpath:: significa cargar recursos desde la ruta de clase, classpath: y classpath:/ son equivalentes, ambos son relativos a la ruta raíz de la clase. El repositorio es un repositorio estándar en el sistema de archivos, pero también puede ser un repositorio en un paquete de clase JAR o ZIP.
classpath*:: Suponiendo que varios paquetes JAR o rutas de clases del sistema de archivos tienen el mismo archivo de configuración, classpath: solo buscará en la primera classpath cargada y classpath*: escaneará todos estos paquetes y archivos JAR. con el mismo nombre aparecen en el classpath.
classpath: ¿Buscar solo en la primera classpath cargada?
¿Cómo entender esta frase? Te lo explicaré basándome en mis experimentos.
Caso 1:
Requisitos previos:
El proyecto A presenta B y C. Los tres proyectos tienen el archivo de configuración resources/spring/spring-application.xml, entre los cuales A tiene el archivo de configuración resources/spring/spring-environment.xml y B está configurado en este archivo. xml
Escenario 1: los proyectos A, B y C tienen clases con el mismo nombre en el mismo paquete. Estas clases están configuradas en sus respectivos spring-application.xml. Los beans del proyecto A están cargados
Escenario 2: Los proyectos B y C tienen clases con el mismo nombre en el mismo paquete. Estas clases están configuradas con el mismo nombre en sus respectivos spring-application.xml y se cargan los beans del proyecto A. p>
Escenario 2: el proyecto B y el proyecto C tienen clases con el mismo nombre en el mismo paquete, y las clases con el mismo nombre están configuradas en sus respectivos spring-application.xml.application.xml.
xml, por lo que se cargarán los archivos de configuración de tres proyectos. En este momento, se debe tener cuidado para evitar que se configure la misma clase en los tres archivos de configuración, de lo contrario se generará una excepción
Resumen: classpath. solo se cargará en la primera búsqueda en la ruta de clase; de lo contrario, busque el archivo jar en el archivo de configuración en la ruta de clase actual hasta que lo encuentre; de lo contrario, continúe buscando el archivo jar en el siguiente archivo de configuración hasta que lo encuentre. de lo contrario, se lanzará una excepción
Caso 2:
Requisitos previos:
Proyectos A y B, B es un módulo de dios público, diseñado para el público **** clase de cliente Cliente, A introducido En B, ambos proyectos tienen un archivo de configuración spring-client.
# El archivo de configuración recurso/spring/spring-common.xml presenta la configuración spring-client.xml archivo del proyecto A
# archivo de configuración recurso/spring/spring-client.xml
1
2
3
4 p>
5
6
7
Conclusión: El archivo de configuración spring-common.xml del proyecto B es importado a spring-client.xml, y el proyecto A spring-client.xml existe tanto en el proyecto B como en el proyecto B. El proyecto A importa el archivo de configuración spring-common.xml del proyecto B y spring-client.xml en el proyecto A entra en vigor.
Sugerencias para proyectos de múltiples módulos
Como se mencionó anteriormente, varios proyectos usan la misma estructura de proyecto de paquete, pero en el diseño real del módulo, se recomienda que diferentes módulos usen diferentes nombres de paquete. para evitar problemas innecesarios.
Extensiones
Spring ha diseñado una interfaz de Recursos, que tiene clases de implementación correspondientes a diferentes tipos de recursos, por ejemplo:
ClassPathResource
Recursos de ruta de clase, los recursos se representan en relación con la ruta de clase
FileSystemResource
Recursos del sistema de archivos, los recursos se representan mediante rutas del sistema de archivos, como D:/conf/bean.xml
InputStreamResource
ServletContextResource
UrlResource
Encapsula un java.net.URL y permite el acceso a cualquier recurso java.net.URL. PathResource
encapsula java.net.URL y permite el acceso a cualquier recurso representado por una URL, como recursos del sistema de archivos, recursos HTTP, recursos FTP
PathResource
encapsula java.net.URL, java.nio.file.path
Tipo de recurso correspondiente al ejemplo de prefijo de dirección
classpath: classpath:/spring/spring-*.xml cargado del recurso classpath. classpath: y classpath:/ son equivalentes y relativos a la ruta raíz de la clase.
Los repositorios de archivos de recursos generalmente se encuentran en el sistema de archivos, pero también se pueden ubicar en un paquete de clase JAR o ZIP
archivo: file:/conf/bean.xml Utilice UrlResource con una ruta absoluta o relativa desde el directorio del sistema de archivos para cargar recursos
/resource/bean.xml Utilice URLResource para cargar recursos desde el servidor web
ftp:// ftp://www.p7.com/resource /bean.xml Usar URLResource carga recursos desde el servidor FTP
Sin prefijo conf/bean.xml Usar el tipo de recursos correspondiente según la implementación específica de ApplicationContext
---- -- ----- -----
Enlace al texto original:/qq_30038111/article/details/82116559