SpringBoot同步笔记

第一个SpringBoot程序

环境

  • jdk 1.8

  • maven 3.6.1

  • springboot最新版2.4.0

  • IDE:IDEA

  1. 官网直接生成springboot项目,然后导入到IDEA(正常开发不会用)

https://start.spring.io/

  1. IDEA新建springboot项目--File-New Project--Spring initializr

原理初探

自动配置:

pom.xml

  • spring-boot-dependencies:核心依赖在父工程中

  • 在引入一些springboot依赖的时候,不需要指定版本,因为有版本仓库

启动器

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • 这个是一个web启动器

  • 启动器,是springboot的启动场景

  • spring-boot-starter-web会帮我们自动导入web环境的所有依赖

  • springboot将所有的功能场景,都变成一个个启动器

  • 要使用什么功能,找到对应的启动器就可以

主程序

//@SpringBootApplication:标注这个类是一个springboot应用
@SpringBootApplication
public class Springboot01HelloApplication {

   public static void main(String[] args) {
       //将springboot应用启动
       SpringApplication.run(Springboot01HelloApplication.class, args);
  }
}

 

@SpringBootConfiguration: springboot配置
   @Configuration:spring配置类
  @Component:说明是一个spring组件
   
@EnableAutoConfiguration:自动配置
   @AutoConfigurationPackage: 自动配置包
@Import({AutoConfigurationImportSelector.class}) :导入类
     AutoConfigurationImportSelector选择了什么
       getAutoConfigurationEntry()获得自动配置的实体(调用了方法*
       *getCandidateConfigurations()获得候选的配置
           getSpringFactoriesLoaderFactoryClass()标注了EnableAutoConfiguration注解的类
      List<String> loadFactoryNames()获取所有的加载配置
   
   

META-INF/spring.factories:自动配置的核心文件

 

 

结论:springboot所有自动配置都是在启动的时候扫描并加载 spring.factories(所有的自动配置类都在这里面,但是不一定会生效,要判断条件是否成立),只要导入了对应的start,就有对应的启动器,有了启动器,自动装配就会生效,然后配置成功

  1. springboot在启动的时候,从类路径下/META-INF/spring.factories获取指定的值

  2. 将这些自动配置的类导入容器,自动配置就会生效

  3. 解决方案和自动配置的东西都在spring-boot-autoconfigure-2.4.0.jar下

 

yaml可以直接给实体类赋值

posted @ 2020-12-14 18:49  Henry829  阅读(253)  评论(0编辑  收藏  举报