springBoot核心原理
Posted 吴二喵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot核心原理相关的知识,希望对你有一定的参考价值。
一、配置文件
yaml的写法
##map的写法1
friends: {lastName: zhangsan,age: 18}
##map的写法2
friends:
lastName: zhangsan
age: 20
###list、set写法1
pets:
- cat
- dog
- pig
###list、set写法2
pets: [cat,dog,pig]
##单引号会将\\n作为字符串输出,双引号会将\\n作为换行输出
##双引号不会转义,单引号会转义
想要代码配置可以提示,添加如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在打包的时候可以exclude相关配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
二、Web开发
2.1 静态资源访问
1、静态资源目录
静态资源目录:类路径下如下目录
/static
/public
/resources
/META-INF/resources
访问:当前项目根路径/+静态资源名
原理:静态映射/**
请求进来,先去controller看能不能处理,不能处理的所有请求又都交给静态资源处理器。
2、静态资源访问前缀
默认无前缀,可以在配置文件中修改
访问路径:当前项目+static-path-pattern+静态资源名=静态资源文件夹下找
spring.mvc.static-path-pattern: /res/**
修改静态资源的存放路径
spring:
resources:
static-location: classpath:/haha/
3、webjar
自动映射
WebJars是将web前端资源(js,css等)打成jar包文件,然后借助Maven工具,以jar包形式对web前端资源进行统一依赖管理,保证这些Web资源版本唯一性。WebJars的jar包部署在Maven中央仓库上。
访问地址:webjars/jquery/3.5.1/jquery.js
2.2 欢迎页支持
静态资源路径下 index.html
可以配置静态资源路径;但是不可以配置静态资源的访问前缀,否则导致index.html不能被默认访问。
spring.mvc.static-path-pattern: /res/**
controller能处理/index
2.3 自定义favicon
图标放在静态资源目录下即可
spring.mvc.static-path-pattern: /res/**
也会影响图标的显示
2.4 静态资源配置原理
springBoot启动默认加载xxxAutoConfiguration(自动配置类)
SpringMVC功能的自动配置类 WebMvcAutoConfiguration
@Configuration
@ConditionalOnWebApplication(
type = Type.SERVLET
)
@ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class})
@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
@AutoConfigureOrder(-2147483638)
@AutoConfigureAfter({DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class})
public class WebMvcAutoConfiguration {
@Configuration
@Import({WebMvcAutoConfiguration.EnableWebMvcConfiguration.class})
@EnableConfigurationProperties({WebMvcProperties.class, ResourceProperties.class})
@Order(0)
public static class WebMvcAutoConfigurationAdapter implements WebMvcConfigurer, ResourceLoaderAware {
配置文件的相关属性和xxx进行了绑定:WebMvcProperties(spring.mvc)和ResourceProperties(spring.resources)
配置类只有一个有参构造器
//有参构造器所有参数的值都会从容器中确定
//ResourceProperties 获取和spring.resources绑定的所有值的对象
//ListableBeanFactory beanFactory springbean工厂
//ResourceHandlerRegistrationCustomizer 找到资源处理器的自定义器
public WebMvcAutoConfigurationAdapter(ResourceProperties resourceProperties, WebMvcProperties mvcProperties, ListableBeanFactory beanFactory, ObjectProvider<HttpMessageConverters> messageConvertersProvider, ObjectProvider<WebMvcAutoConfiguration.ResourceHandlerRegistrationCustomizer> resourceHandlerRegistrationCustomizerProvider) {
this.resourceProperties = resourceProperties;
this.mvcProperties = mvcProperties;
this.beanFactory = beanFactory;
this.messageConvertersProvider = messageConvertersProvider;
this.resourceHandlerRegistrationCustomizer = (WebMvcAutoConfiguration.ResourceHandlerRegistrationCustomizer)resourceHandlerRegistrationCustomizerProvider.getIfAvailable();
}
以上是关于springBoot核心原理的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot核心原理:自动配置、事件驱动、Condition