01 Spring Boot 入门
Spring Boot 入门
原理初探
主程序
@SpringBootApplication
public class SpringBoot01Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot01Application.class, args);
}
}
注解
-
@SpringBootConfiguration //springboot的配置 @Configuration //spring配置类 @Component //说明这也是spring组件 @EnableAutoConfiguration //自动配置 @AutoConfigurationPackage //自动配置包 @Import(AutoConfigurationPackages.Registrar.class) //自动配置包注册 @Import(AutoConfigurationImportSelector.class) //获取所有的配置 List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
获取候选配置
-
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) { List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()); Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you " + "are using a custom packaging, make sure that file is correct."); return configurations; }
-
META-INF/spring.factories:自动配置核心文件
Properties properties = PropertiesLoaderUtils.loadProperties(resource);
//所有资源加载到配置类中
结论:SpringBoot所有自动配置在启动时扫描并加载(通过@SpringBootApplication
注解实现):spring.factories存放自动加载的所有类,生效条件为:对应的启动项(start
)被导入。未导入的启动项(start
)不会加载。
- springboot在启动时,从类路径
META-INF/spring.factories
中获取指定值 - 自动配置的类导入后,便可生效,自动配置
- 以前需要手动装配的类,springboot自动装配了
- 整合j2EE,解决方案以及自动配置在
spring-boot-autoconfigure-2.3.0.RELEASE.jar
包下 - 它会吧所有需要导入的组件,以类名方式返回,这些组件就会被添加到容器;
- 容器中存在很多
xxxAutoConfiguration
文件(@Bean),这些类给容器中导入了这个场景需要的所有组件,并自动配置,@Configuration
,javaConfig
!。 - 有了自动配置类,不需要再进行手动编写配置文件。
SpringBoot的理解:
- 自动装配;
- run();
- 推断应用的类型,普通项目还是Web项目
- 查找并加载所有可用初始化器,设置到
initializers
(初始化器)属性中 - 找出所有应用程序监听器,设置到
listeners
属性中 - 推断并设置main方法的定义类,找到运行的主类
SpringBoot 配置
yaml可以直接给实体类赋值
精髓
-
SpringBoot启动时会加载大量的自动配置类
-
查看需要的功能有没有在默认配置的自动配置类中
-
查看自动配置类中配置了哪些组件(如果组件存在其中就不需要手动配置)
-
给容器中自动配置类添加组件时,从properties中获取某些属性。只需要在配置文件中指定值即可
-
XXXXAutoConfigurartion
:自动配置类;给容器中添加组件 -
XXXXProperties
:封装配置文件中的相关属性。
-
SpringBoot Web开发
静态资源处理方法:
- webjars(最优先)
- url:
/webjars/
- 实际目录:
classpath:/META-INF/resources/webjars/
- url:
- 资源查找顺序
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
模板引擎
结论
导入相应依赖即可使用thymeleaf,将相应的网页放到thymeleaf文件夹下即可
public static final String DEFAULT_PREFIX = "classpath:/templates/";
public static final String DEFAULT_SUFFIX = ".html";
在Spring Boot中,有非常多的XXXXConfiguration 帮助我们进行扩展配置,只要看见了这个东西,就要注意了