расширять
Нажмите, чтобы прыгнуть~:Сводка по обучению и расширение серии SpringBoot
@[toc]
предисловие
- На самом деле вещи SpringBoot очень просты в использовании, потому что самой большой особенностью SpringBoot является автоматическая сборка.
- Но полагаться на механическое зазубривание явно недостаточно, ведь слишком много вещей, которые отнимают много времени и неблагодарны. Далее будет про автопроводку SpringBootисходный кодОбъясняйте, смотрите его почаще, когда вам нечем заняться, а изучение идей и задумок в нем точно пойдет на пользу нашему росту!
1. Статические ресурсы
1.1 Подробное объяснение правил отображения статических ресурсов
- ① Найдите файл WebMvcAutoConfiguration.class.
- ② Найдите метод addResourceHandlers (добавить обработку ресурсов)
- ③ Исследование исходного кода
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
//资源如果不存在,即false,日志打印【默认资源处理被禁用】,不进行处理,直接返回,反之进入第二步
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
return;
}
ServletContext servletContext = getServletContext();
//添加静态资源
//所有的 /webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 找对应的资源;
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));
}
});
}
private void addResourceHandler(ResourceHandlerRegistry registry, String pattern, String... locations) {
addResourceHandler(registry, pattern, (registration) -> registration.addResourceLocations(locations));
}
private void addResourceHandler(ResourceHandlerRegistry registry, String pattern,
Consumer<ResourceHandlerRegistration> customizer) {
if (registry.hasMappingForPattern(pattern)) {
return;
}
ResourceHandlerRegistration registration = registry.addResourceHandler(pattern);
customizer.accept(registration);
registration.setCachePeriod(getSeconds(this.resourceProperties.getCache().getPeriod()));
registration.setCacheControl(this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl());
customizeResourceHandlerRegistration(registration);
}
1.2 Как использовать веб-файлы для доступа к статическим ресурсам
- ① Проект ссылается на веб-банки:
- Адрес официального сайта:официальный сайт webjars
- Возьмем jquery в качестве примера
- добавить зависимости
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.6.0</version>
</dependency>
- 2 найти позицию пакета JAR
- 3 Запустите доступ к проекту, чтобы увидеть
- ④Адрес доступа:http://127.0.0.1:7777/webjars/jquery/3.6.0/jquery.js
- ⑤ Визит прошел успешно! Готово!
1.3 Путь к пользовательскому статическому ресурсу
- ① После введения веб-файлов вы можете создать следующие три папки в папке ресурсов:
- ②Добавить тестовый html-файл в общедоступный
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>dadadingdada</h1>
</body>
</html>
- 3 Доступ к следующей попытке: Работа!
1.4 Порядок статических путей к ресурсам
- ① Сначала создайте четыре html-файла с одинаковыми именами в разных местах, но с разным содержимым, как показано ниже:
- ②Когда все четыре существуют:Наивысший приоритет: файлы в статическом каталоге
- ③ Удалите html в статическом каталоге:Приоритет: второй по величине в общедоступном каталоге
- Не забудьте очистить кеш браузера, иначе вы все равно можете увидеть исходную страницу
- ④ Удалите файлы в общем каталоге:Приоритет: 404
- ⑤ Резюме:Статический приоритет выше публичного, и шаблон должен быть перенаправлен через контроллер, доступ к корневому каталогу ресурсов невозможен, если вы сами не укажете каталог.
1.5 Укажите путь доступа
- ①Как только вы сами определите путь к статической папке, исходная автоматическая конфигурация станет недействительной!
- добавлен файл конфигурации yml:
- Формат: static-locations:file:+путь, где расположены статические ресурсы
spring:
resources:
static-locations: file:C:\Users\大大丁大大\Downloads\个人测试文件\dyjProject\src\main\java\com\dyjTest\dyjProject\dyj
- ②Проверка доступа:
2. Настройка домашней страницы и значков
2.1 Главная
- ①Исходный код исходного кода: метод WelcomePageHandlerMapping
@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext,
FormattingConversionService mvcConversionService, ResourceUrlProvider mvcResourceUrlProvider) {
WelcomePageHandlerMapping welcomePageHandlerMapping = new WelcomePageHandlerMapping(
new TemplateAvailabilityProviders(applicationContext), applicationContext, getWelcomePage(),//获得首页,即欢迎页
this.mvcProperties.getStaticPathPattern());
welcomePageHandlerMapping.setInterceptors(getInterceptors(mvcConversionService, mvcResourceUrlProvider));
welcomePageHandlerMapping.setCorsConfigurations(getCorsConfigurations());
return welcomePageHandlerMapping;
}
- ②получить страницу приветствия()
public FlashMapManager flashMapManager() {
return super.flashMapManager();
}
private Resource getWelcomePage() {
for (String location : this.resourceProperties.getStaticLocations()) {
Resource indexHtml = getIndexHtml(location);
if (indexHtml != null) {
return indexHtml;
}
}
ServletContext servletContext = getServletContext();
if (servletContext != null) {
return getIndexHtml(new ServletContextResource(servletContext, SERVLET_LOCATION));
}
return null;
}
// 欢迎页就是一个location下的的 index.html 而已
private Resource getIndexHtml(Resource location) {
try {
Resource resource = location.createRelative("index.html");
if (resource.exists() && (resource.getURL() != null)) {
return resource;
}
}
catch (Exception ex) {
}
return null;
}
-
③ Страница приветствия, все страницы index.html в папке статических ресурсов, сопоставленные /**.
- Например, я посещаюhttp://localhost:7777/, вы найдете index.html в папке статических ресурсов
- Создайте новый index.html в любом из трех каталогов, указанных выше, а затем посетите тест.http://localhost:7777/Посмотрите результаты!
2.2 Значки
- ① Сначала отключите значок по умолчанию: рекомендуется сбросить версию SpringBoot до 2.1.7, потому что в последней версии этого больше нет.
- ②Добавить конфигурацию в yml
spring:
mvc:
favicon:
enabled: false
- ③Создайте новый файл favicon.ico: поместите его в статический каталог~
- ④Посетить после очистки кеша браузера: Смотрите внимательно! ! ! !
Впереди долгий путь, и я обязательно буду его искать вдоль и поперёк~Если вы думаете, что я блогеры хорошо пишу! Писать нелегко, ставьте лайки, подписывайтесь и комментируйте, чтобы поощрить блоггеров~Пожалуйста, указывайте источник при перепечатке~