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可用被直接访问