Recursos estáticos para el desarrollo de Spring Boot

1 función sencilla

1 Acceso a recursos estáticos

1 directorio de recursos estáticos

Siempre que los recursos estáticos se coloquen en el classpath: /static (o /public o /resources o /META - INF/resource

Acceso: ruta raíz del proyecto actual / + nombre de recurso estático

Principio: el mapeo estático es amplio. Cuando llegue la solicitud, primero diríjase al controlador para ver si se puede procesar. Todas las solicitudes que no se pueden procesar se transfieren al procesador de recursos estáticos. Si no se puede encontrar el recurso estático, responderá con una página 404.

Cambie la ruta de recursos estática predeterminada:

spring:
    mvc:
        static-path-pattern: /res/**
    resources:
        static-locations: [classpath:/haha/]

2 Prefijo de acceso a recursos estáticos

sin prefijo por defecto

spring:
  mvc:
	static-path-pattern: /res/**

Proyecto actual + static -path-pattern + nombre de recurso estático = buscar en la carpeta de recursos estáticos

3 Apoyo a domicilio

index.html en la ruta de recursos estáticos

  • Las rutas de recursos estáticos se pueden configurar
  • Sin embargo, el prefijo de acceso de los recursos estáticos no se puede configurar. De lo contrario, no se puede acceder a index.html de forma predeterminada.
spring:
 # 这个会导致welcome page功能失效
 # mvc:
	 # static- path- pattern: /res/** 
  resources:
    static-locations: [classpath:/haha/]

4 icono de favorito personalizado

favicon.ico se puede colocar en el directorio de recursos estáticos.

spring:
 # 这个会导致 Favicon 功能失效
 # mvc:
 # static-path-pattern: /res/* 

5 principios de configuración de recursos estáticos

SpringBoot comienza a cargar la clase xxxAutoConfiguration (clase de configuración automática) de forma predeterminada

Entra en vigor la clase de configuración automática WebMvcAutoConfiguration de la función SpringMVC

@Configuration(proxyBeanMethods = false)
(aJConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({
    
     Servletclass, DispatcherServlet.class^ WebMvcConfigurer
@ConditionalOnlvlissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ondened.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({
    
     DispatchenServletAutoConfigunation.class, TaskExecutionA
ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {
    
    }

Configuración en el contenedor:

@Configuration(proxyBeanMethods = false)
@Impont(EnableWeblvlvcConfiguration.class)
@EnableConfigurationProperties({
    
     WebMvcProperties .class, ResounceProperties.class})
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfig

Los atributos relevantes del archivo de configuración están vinculados a xxx. WebMvcPropertiesspring.mvcN propiedades de recursosprimavera.recursos

1 La clase de configuración tiene solo un constructor con parámetros

// 有参构造器所有参数的值都会从容器中确定
// ResourceProperties resourceProperties;获耳又和spring.resources绑定的所1有的值的〉
// WebMvcProperties mvcProperties 获取和spring.mvc绑定的所有的值的对象
// ListableBeanFactory beanFactory Spring的beanFactory
// HttpMessageConverters 找到所1有的HttpMessageConverters
// ResourceHandlerRegistrationCustomizer 找到资源处理器的自定义器。=========
// DispatcherServletPath
// ServletRegistrationBean 给应用注册Servlet、Filter
public WebMvcAutoConfigurationAdapter(ResourceProperties resourcePropertie
    ListableBeanFactory beanFactory, ObjectProviden<HttpMessageCon
    ObjectProvider< ResourceHandlenRegistrationCustomizer>
    ObjectProvider<DispatchenServletPath> dispatcherServletPath^
    ObjectProvider<ServletRegistrationBean<?>> servletRegistration
    this.resourceProperties = resourceProperties;
    this.mvcProperties = mvcProperties;
    this.beanFactory = beanFactory;
    this.messageConvertersProvider = messageConvertersProvider;
    this.resourceHandlerRegistrationCustomizer = resourceHandlerRegist
    this.dispatcherServletPath = dispatcherServletPath;
    this.servletRegistrations = servletRegistrations;
}

2 Reglas predeterminadas para el manejo de recursos

public void addResourceHandlers(ResourceHandlerRegistry registry){
    
    
    if (!this.resourceProperties.isAddMappings()){
    
    
    logger.debug("Default resource handling disabled");
    return;
    }
    // ...
}

configuración

spring:
  # mvc:
  # static-path-pattern: /res/**
	resources:
      add-mappings: false # 禁用所有静态资源规则

Supongo que te gusta

Origin blog.csdn.net/ABestRookie/article/details/127376678
Recomendado
Clasificación