Mecanismo SPI en Springboot
Además de cargar clases, el cargador de clases también tiene una función muy importante, que es cargar recursos. Puede leer cualquier archivo de recursos del paquete jar. Por ejemplo, el método ClassLoader.getResources (nombre de cadena) se utiliza para leer. paquete jar. de archivos de recursos. El método getResources (nombre de cadena) se utiliza para leer los archivos de recursos en el paquete jar.
Su lógica es en realidad la misma que la lógica de carga de clases. Primero, determine si el cargador de clases principal está vacío. no está vacío, luego delega al cargador de clases principal para que realice la tarea de encontrar recursos hasta BootstrapClassLoader, y finalmente es tu turno de buscar. Diferentes cargadores de clases son responsables de escanear paquetes jar en diferentes rutas, al igual que cargar clases. Finalmente, todos los paquetes jar se escanean para encontrar archivos de recursos que cumplan con las condiciones.
(1) Idea SPI
(2) Convención SPI