初识springboot+thymeleaf(自动配置源码解析)

tech2024-11-04  23

springboot官方文档 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

1. springboot和maven安装(IDEA自带springboot和maven)

2. 创建springboot 选择web插件 等于 自动添加starter-web的dependency

3. pom.xml用来放依赖 然后maven扫描这个文件 下载里面的依赖 放到External Libraries 用jar包的形式

如果要使用什么插件 可以直接复制粘贴依赖到pom.xml

springboot版本管理 和 重要的starter-web依赖

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>

4. DemoApplication.java

//标注这个类是一个springboot的应用 启动类下的所有资源被导入 @SpringBootApplication public class DemoApplication { public static void main(String[] args) { //应用启动 //run方法判断当前的主类 SpringApplication.run(DemoApplication.class, args); } }

@SpringBootApplication注释 点击源码文件 同时有

@SpringBootConfiguration @EnableAutoConfiguration

第一个是spring的配置类=spring的一个组件

第二个 开启自动配置功能,逐层剖析源码是 

@AutoConfigurationPackage 获取扫描包的路径 AutoConfigurationImportSelector getAutoConfigurationEntry getCandidateConfigurations List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()); loadSpringFactories String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";

这个spring.factories文件长这样!!!都是候选配置 但是因为每个配置里面有conditionOn的条件 不是整个文件的自动配置都生效

# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\ org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\ org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\

这个factories文件是meta source 会被转换成 MultiValueMap<String, String>类型 返回给自动配置类

5. thymeleaf(一个模板引擎)依赖添加

<!--thymeleaf--> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-java8time</artifactId> </dependency>

6. 可用webjars依赖 里面有封装好的静态资源 如 jQuery等

7. resourcesProperties可用提供多个location被识别到,因此 resources目录下的子目录static, templates,public可用被直接访问

 

 

 

 

 

 

最新回复(0)