如何搞懂SpringBoot关于Web开发配置的底层原理
2020-04-21 20:22
856 查看
文章目录
1、简介
使用SpringBoot;
1)、创建SpringBoot应用,选中我们需要的模块;
2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来
3)、自己编写业务代码;
自动配置原理?
在某个场景下SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxx
xxxxAutoConfiguration:帮我们给容器中自动配置组件; xxxxProperties:配置类来封装配置文件的内容;
2、SpringBoot对Web静态资源的映射规则;
// WebMvcAutoConfiguration.java内的配置代码如下:
public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); return; } Integer cachePeriod = this.resourceProperties.getCachePeriod(); if (!registry.hasMappingForPattern("/webjars/**")) { customizeResourceHandlerRegistration( registry.addResourceHandler("/webjars/**") .addResourceLocations( "classpath:/META‐INF/resources/webjars/") .setCachePeriod(cachePeriod)); } String staticPathPattern = this.mvcProperties.getStaticPathPattern(); //静态资源文件夹映射 if (!registry.hasMappingForPattern(staticPathPattern)) { customizeResourceHandlerRegistration( registry.addResourceHandler(staticPathPattern) .addResourceLocations( this.resourceProperties.getStaticLocations()) .setCachePeriod(cachePeriod)); } } //配置欢迎页映射 @Bean public WelcomePageHandlerMapping welcomePageHandlerMapping(ResourceProperties resourceProperties) { return new WelcomePageHandlerMapping(resourceProperties.getWelcomePage(), this.mvcProperties.getStaticPathPattern()); } //配置喜欢的图标 @Configuration @ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true) } public static class FaviconConfiguration { private final ResourceProperties resourceProperties; public FaviconConfiguration(ResourceProperties resourceProperties) { this.resourceProperties = resourceProperties; } @Bean public SimpleUrlHandlerMapping faviconHandlerMapping() { SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping(); mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1); //所有 **/favicon.ico mapping.setUrlMap(Collections.singletonMap("**/favicon.ico", faviconRequestHandler())); return mapping; } @Bean public ResourceHttpRequestHandler faviconRequestHandler() { ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler(); requestHandler.setLocations(this.resourceProperties.getFaviconLocations()); return requestHandler; } }
2.1、/webjars/ **的请求
所有 /webjars/ **的请求,都会去 classpath:/META-INF/resources/webjars/ 找资源;
适用于外界已有的静态资源框架 。webjars:以jar包的方式引入静态资源; http://www.webjars.org/
例如想要获取localhost:8080/webjars/jquery/3.3.1/jquery.js静态资源
<!‐‐引入jquery‐webjar‐‐>在访问的时候只需要写webjars下面资源的名称即可 <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.3.1</version> </dependency>
2.2、"/**" 访问当前项目的任何资源
“/**” 访问当前项目的任何资源,都去(静态资源的文件夹)找映射
适用于自己手写的css文件和js文件
<!--下面的4个静态资源路径被同时使用--> "classpath:/META‐INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" "/":当前项目的根路径
localhost:8080/abc === 去静态资源文件夹里面找abc
2.3、欢迎页映射
欢迎页: 静态资源文件夹下的所有index.html页面;被"/**"映射;
例如使用localhost:8080/ 找index页面
2.4、所有的 **/favicon.ico 都是在静态资源文件下找;
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 我是如何做到springboot自动配置原理解析
- SpringBoot--关于配置(配置文件加载位置,外部配置,自动配置原理)
- Spring实现原理分析(二十五).Spring Boot如何把application.*中的配置数据转换成对象
- Spring实现原理分析(二十五).Spring Boot如何把application.*中的配置数据转换成对象
- 我是如何做到springboot自动配置原理解析
- 【Spring】如何在单个Boot应用中配置多数据库?
- SpringBoot如何导入自定义配置的yml文件
- Springboot jar包外指定配置文件及原理
- SpringBoot如何导入自定义配置的yml文件
- 全面解析SpringBoot自动配置的实现原理
- [Spring Boot] 4. Spring Boot实现自动配置的原理
- Spring实现原理分析(二十六).Spring Boot关于嵌入式servlet容器
- SpringBoot如何导入自定义配置的yml文件
- Spring Boot核心原理-自动配置
- 教你如何配置Spring Boot的properties文件
- SpringBoot下如何配置实现跨域请求?
- springboot 入门教程(3)-运行原理、关键注解和配置
- springboot如何读取配置文件中的参数(例如:application-consts.properties) 又结合maven读取配置文件的顺序
- Spring Boot核心原理-自动配置
- 在eclipse中关于Spring和Hibernate 的XML配置如何提示类的包路径的办法