Loading

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)不会加载。

  1. springboot在启动时,从类路径META-INF/spring.factories中获取指定值
  2. 自动配置的类导入后,便可生效,自动配置
  3. 以前需要手动装配的类,springboot自动装配了
  4. 整合j2EE,解决方案以及自动配置在spring-boot-autoconfigure-2.3.0.RELEASE.jar包下
  5. 它会吧所有需要导入的组件,以类名方式返回,这些组件就会被添加到容器;
  6. 容器中存在很多xxxAutoConfiguration文件(@Bean),这些类给容器中导入了这个场景需要的所有组件,并自动配置,@ConfigurationjavaConfig!。
  7. 有了自动配置类,不需要再进行手动编写配置文件。

SpringBoot的理解:

  • 自动装配;
  • run();
    1. 推断应用的类型,普通项目还是Web项目
    2. 查找并加载所有可用初始化器,设置到initializers(初始化器)属性中
    3. 找出所有应用程序监听器,设置到listeners属性中
    4. 推断并设置main方法的定义类,找到运行的主类

SpringBoot 配置

yaml可以直接给实体类赋值

精髓

  1. SpringBoot启动时会加载大量的自动配置类

  2. 查看需要的功能有没有在默认配置的自动配置类中

  3. 查看自动配置类中配置了哪些组件(如果组件存在其中就不需要手动配置)

  4. 给容器中自动配置类添加组件时,从properties中获取某些属性。只需要在配置文件中指定值即可

    • XXXXAutoConfigurartion自动配置类;给容器中添加组件

    • XXXXProperties封装配置文件中的相关属性

SpringBoot Web开发

静态资源处理方法:

  1. webjars(最优先)
    • url:/webjars/
    • 实际目录:classpath:/META-INF/resources/webjars/
  2. 资源查找顺序
    1. classpath:/META-INF/resources/
    2. classpath:/resources/
    3. classpath:/static/
    4. classpath:/public/

模板引擎

结论

​ 导入相应依赖即可使用thymeleaf,将相应的网页放到thymeleaf文件夹下即可

public static final String DEFAULT_PREFIX = "classpath:/templates/";

public static final String DEFAULT_SUFFIX = ".html";

在Spring Boot中,有非常多的XXXXConfiguration 帮助我们进行扩展配置,只要看见了这个东西,就要注意了

posted @ 2020-06-11 20:29  shimeath  阅读(114)  评论(0)    收藏  举报