Conceptos básicos de SpringBoot2.x: empaquetar recursos estáticos en WebJar
Cuando escribimos un proyecto con front-end y back-end separados, el proyecto front-end generalmente requiere recursos estáticos (Imagen, CSS, JavaScript... Si utilizamos dependencias externas para proporcionarlos, También debería agregar archivos de recursos estáticos. Colóquelo en el archivo del paquete, para que podamos proporcionar nuestras funciones de manera más conveniente. La función en una interfaz de administración proporcionada en mi marco de registro distribuido de código abierto, minbox-logging, utiliza este método para implementar la compilación de recursos estáticos. y compilar
WebJars
Cuando escribimos proyectos de separación de front-end y back-end, generalmente necesitamos recursos estáticos (Imagen, CSS, JavaScript...) para compilar la página HTML. a minbox-logging-admin-ui, aprenderemos cómo lograr esto a continuación
Antes de empaquetar recursos estáticos, primero echamos un vistazo al valor predeterminado de configuración spring.resources.static-locations proporcionado por SpringBoot, que se utiliza para configurar ResourceHandler, la lista de valores de configuración de este parámetro se utilizará como un directorio estático de acceso directo cuando se inicie el proyecto, de modo que podamos acceder directamente al contenido de recursos estáticos requeridos. p> .resources.static-locations se encuentra en la clase de configuración org.springframework.boot.autoconfigure.web.ResourceProperties y el valor predeterminado es la constante estática CLASSPATH_RESERVACIONES en esta clase. El valor predeterminado de CLASSPATH_RESOURCE_LOCATION es el siguiente:
<. p> Al ver el código fuente, sabemos que se puede acceder directamente a los recursos en el directorio classpath:/META-INF/resources/ a través del enlace de mapeo predeterminado. De esta manera, podemos almacenar dependencias de recursos estáticos en archivos de recursos en META. -Directorio INF/resourcesUsamos Maven para construir un proyecto normal, agregamos la configuración del directorio de recursos al archivo pom.xml y copiamos todos los archivos en el directorio src/main/resources a META-INF. /resources durante el directorio del proceso de compilación, como se muestra a continuación:
Para fines de demostración local, instalaremos el proyecto Maven a través de mvn install
Para fines de demostración local, Utilizará el comando mvn install. Instale el proyecto Maven en un repositorio local para que otros proyectos puedan usarlo.
Creemos un proyecto SpringBoot y agreguemos las siguientes dependencias en el archivo pom.xml del proyecto:
Ya que anteriormente usamos el comando mvn install para instalar el proyecto de recursos estáticos en el local warehouse, para que podamos usar esa dependencia.
Usando la herramienta IDEA, podemos ver los archivos de recursos en la dependencia webjars-sample, como se muestra a continuación:
Dado que SpringBoot proporciona un valor predeterminado para spring.resources.static- parámetro de ubicaciones, establecerá el directorio classpath:/META-INF/resources como un mapeo de recursos estático, para que podamos acceder directamente al archivo head.jpg.
Ejecute el proyecto SpringBoot y acceda a head.jpg accediendo a http://localhost:8080/head.jpg, se ve así:
Podemos acceder a ip:port mediante / head.jpg para acceder a head.jpg en lugar de anteponer el archivo ip:port/head.jpg. Esta es la razón principal por la que SpringBoot proporciona otra configuración para el archivo spring.jpg. static-path-pattern, su función es configurar el prefijo de acceso de los recursos estáticos. El valor predeterminado es /**. Si necesita modificarlo, puede especificarlo directamente en el archivo application.yml. p> El archivo de configuración application.yml es el siguiente como se muestra:
Cambiamos el valor de la configuración spring.mvc.static-path-pattern a /static/**. debe pasar http://localhost:8080/static/head.jpg para poder acceder al recurso.
Si tiene algunos recursos que no desea que otros modifiquen para que los usuarios puedan integrarlos más fácilmente, puede usar esta forma para empaquetar su propio Webjar y simplemente agregar dependencias para acceder. los recursos estáticos, o puede empaquetar páginas HTML estáticas de esta manera.