SpringBoot开发单体应用

Web开发探究

SpringBoot的最大特点:自动装配
使用SpringBoot的步骤:
1、创建一个SpringBoot应用,选择模块、然后等待项目构建完成即可。
2、编写一些需要的配置文件。
3、专注于编写业务代码。其余东西不需要手动配置。
配置相关的类:

  • xxxAutoConfiguration:向容器中自动配置组件。
  • xxxProperties:自动配置类,封装配置文件的内容。

静态资源处理

简介

SpringBoot中,所有的配置文件都在application.yaml或application.properties文件中,并没有web.xml文件。我们需要想办法实现*.css , *.js等静态资源文件生效,我们就需要明白其中的规则。
学习方法:
1、从源码分析,然后得出结论。
2、尝试去测试,验证结论是否正确。
看源码之前,抛出一个问题:SpringBoot默认没有webapp目录,那我们的资源文件应该放在哪里呢?

尝试分析源码并进行探究

在SSM架构中,整个SSM都是基于SpringMVC的。因此我们第一步应该去研究SpringBoot中关于MVC的自动配置。
研究之后可以得到以下结论:
1、所有MVC相关的配置都在WebMvcAutoConfiguration类中,比如视图解析器、静态资源过滤等。
2、addResourceHandlers静态资源处理方法分析:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
	//禁用默认规则配置,若手动添加了资源映射路径的配置,这些配置将直接失效
	if (!this.resourceProperties.isAddMappings()) {
		logger.debug("Default resource handling disabled");
		return;
	}
	//缓存控制
	Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
	CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();
	//分析源代码,需要掌握看对象的方法调用
	// localhost:8080/webjars/jquery.js 
	// 判断是否存在一个映射路径 /webjars/**
	// addResourceHandler 处理逻辑 /webjars/a.js 
	// addResourceLocations 处理资源的地址 classpath:/META- INF/resources/webjars/a.js
	if (!registry.hasMappingForPattern("/webjars/**")) {
		customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**")
				.addResourceLocations("classpath:/META-INF/resources/webjars/")
				.setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
	}
	//获取静态资源路径
	String staticPathPattern = this.mvcProperties.getStaticPathPattern();
	// localhost:8080/ 
	// 如果访问映射的路径是 staticPathPattern = "/**"
	// this.resourceProperties.getStaticLocations())
	if (!registry.hasMappingForPattern(staticPathPattern)) {
		customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern)
				.addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations()))
				.setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
	}
}

什么是webjars

webjars,简单来说就是使用maven的方式导入前端静态资源,比如jQuery的依赖如下:

<dependency>            
  <groupId>org.webjars</groupId>
  <artifactId>jquery</artifactId>
  <version>3.4.1</version>
</dependency>

导入依赖后可以发现项目中导入了如下图所示jar包。
webjars jQuery jar包
测试访问一下,访问地址:http://localhost:8080/webjars/jquery/3.4.1/jquery.js,发现可以成功访问到jQuery源文件。
webjars jQuery源文件访问测试

第二种静态资源处理规则

SpringBoot默认的静态资源处理映射目录如下代码所示:

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = 
{ 
  "classpath:/META-INF/resources/", //在starter中使用,如SWAGGER-UI
  "classpath:/resources/",//文件资源
  "classpath:/static/", //静态资源
"classpath:/public/"//公共的文件,比如图标...
};

classpath映射的是resources目录,这些静态资源处理映射目录的优先级由高到低跟其索引顺序保持一致。

自定义配置静态资源映射路径

我们可以配置自己的静态资源映射目录,只不过这样配置之后,一切原来的配置都会失效。

spring.resources.static-locations=classpath:/wunian

首页和图标处理

分析源码

欢迎页(首页&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wunianisme

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值