Cet article vous présentera comment explorer les règles de mappage de ressources statiques via le code source. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Spring Boot - Explorez les règles de mappage des ressources statiques via le code source
Lorsque nous développons un projet Spring Boot, nous devons importer de nombreuses ressources statiques, telles que comme css, js et autres fichiers
Si nous sommes une application Web, il y aura une webapp sous notre main. Nous avions l'habitude d'y importer toutes les pages, n'est-ce pas ! Mais qu'en est-il de notre pom actuel, la méthode d'empaquetage est jar, alors SpringBoot peut-il écrire des pages pour nous de cette manière ? Bien sûr, c'est possible, mais SpringBoot a des réglementations sur l'emplacement des ressources statiques !
Règles de mappage des ressources statiques
La première règle de mappage
Dans SpringBoot, la configuration Web de SpringMVC se trouve dans la classe de configuration WebMvcAutoConfiguration ;
Il existe de nombreuses méthodes de configuration dans WebMvcAutoConfigurationAdapter ; l'une d'elles consiste à ajouter des méthodes de traitement des ressources : addResourceHandlers (), le code source est le suivant.
@Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { super.addResourceHandlers(registry); if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); return; } ServletContext servletContext = getServletContext(); addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/"); addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> { registration.addResourceLocations(this.resourceProperties.getStaticLocations()); if (servletContext != null) { registration.addResourceLocations(new ServletContextResource(servletContext, SERVLET_LOCATION)); } }); }
WebJars consiste à regrouper les ressources du client (navigateur) (JavaScript, Css, etc.) dans des fichiers de package jar pour effectuer une gestion unifiée des dépendances des ressources. Le package jar de WebJars est déployé sur le référentiel central Maven.
Nous pouvons accéder au site officiel des webjars pour trouver les ressources dont nous avons besoin, ajouter des dépendances maven à nos projets, puis utiliser ces ressources directement.
Par exemple, nous voulons importer des ressources jquery
<dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.6.0</version></dependency>
Après l'importation, nous pouvons trouver l'emplacement de stockage de la ressource via le chemin de la ressource et y accéder. nous importons sur le site Web des webjars, tous sont conformes à La structure dans l'image ci-dessous
est accessible via le chemin et la ressource statique est accessible avec succès !
La deuxième règle de mappage
Continuons à analyser le code source
getStaticPathpattern() : obtenez le modèle de chemin statique, cliquez dedans et regardez le code source
public String getStaticPathPattern() { return this.staticPathPattern; }
Regardez le code source de staticPathPattern
/**
est le répertoire courant Toutes les ressources statiques du répertoire courant peuvent être identifiées, mais à quoi fait-elle référence exactement dans le répertoire courant ? On peut le voir en cliquant sur le code source de resourceProperties. Le code source est le suivant :
Le code source ci-dessus donne clairement nos quatre chemins de ressources statiques, donc tant que les ressources statiques dans ces quatre répertoires le sont, elles peuvent être obtenu directement.
Testons-le, complétons d'abord le répertoire ci-dessus, puis mettons une ressource js dans le répertoire des ressources
Démarrez le test de l'application Springboot : accédez avec succès au ressource statique !
Les ressources statiques stockées dans les quatre répertoires suivants peuvent être identifiées par nous :
"classpath:/META-INF/resources/""classpath:/resources/""classpath:/static/""classpath:/public/"
Remarque :
Chapitre Le chemin d'accès d'un répertoire est localhost:8080/webjars/resource structure de répertoires, et les trois chemins d'accès suivants sont localhost:8080/resource name
La priorité de la deuxième règle de mappage est :resources>static (par défaut)>public
Chemin de ressource statique personnalisé
Nous pouvons spécifier les dossiers que nous devons insérer via le fichier de configuration. les fichiers sont configurés dans application.properties ;
spring.resources.static-locations=classpath:/coding/,classpath:/cheng/
Cependant, nous pouvons voir dans le code source ci-dessous que si le chemin de la ressource est personnalisé, les quatre chemins par défaut ci-dessus ne seront pas valides, il est donc préférable de ne pas personnaliser le chemin, utilisez simplement Springboot pour le configurer automatiquement pour nous.
if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); return; }
Recommandations d'apprentissage gratuites associées : Tutoriel de base Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!