springboot学习

一、创建

官网创建方式

1、进入网页https://spring.io/projects  选择springboot并点击

2、在新页面拉到底,点击Spring Initializr后,进入创建页面

3、填写个人配置,Dependencies添加一个Spring Web(看项目需要)

4、点击generate,将下载的文件解压,导入到idea即可

问题1:open的项目右侧没有maven

  解决办法:help——find action——查找 Add Maven Projects 并点击——选择pom.xml——ok

问题2:pom.xml中依赖 spring-boot-maven-plugin报红

  解决办法:复制 spring-boot-starter-parent 的版本号到spring-boot-maven-plugin下面

idea创建方式

正常创建时情况如下截图,点击下一步级跟官网创建方式一样了。社区版没有Spring Initializr,后面百度说安装插件Spring Assistant可以代替;

结果我只找到了插件spring-assistant-@valueToYml,遂放弃,不想浪费时间。官网创建也没差多少

 二、主程序的注解@SpringBootApplication的注解

1、@ComponentScan
  这个注解在Spring中很重要 ,它对应XML配置中的元素
  作用:自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中

2、@SpringBootConfiguration
   SpringBoot的配置类 ,标注在某个类上 , 表示是SpringBoot的配置类
  (1)@Configuration 说明这是一个配置类 ,配置类就是对应Spring的xml 配置文件,  点开这个注解会有如下1个注解
     @Component 说明启动类本身也是Spring中的一个组件而已,负责启动应用!

3、@EnableAutoConfiguration
  告诉SpringBoot开启自动配置功能,这样自动配置才能生效,  点开这个注解会有如下2个注解
  (1)@AutoConfigurationPackage 自动配置包  点开这个注解会有如下1个注解
      @Import(AutoConfigurationPackages.Registrar.class)   将主启动类的所在包及包下面所有子包里面的所有组件扫描到Spring容器
  (2)@Import(AutoConfigurationImportSelector.class) 给容器导入组件
    点击AutoConfigurationImportSelector 源码,找到getCandidateConfigurations方法;
    这个方法调用了SpringFactoriesLoader 类loadFactoryNames() 方法;
    loadFactoryNames() 方法又调用了loadSpringFactories 方法,在该方法中,自动配置的文件是从META-INF/spring.factories目录拿到的

spring.factories是spring-boot-autoconfigure-2.5.4.jar包META-INF目录下,保存了很多用于自动配置的JavaConfig类
org.springframework.boot.autoconfigure.xxx 的配置项,
通过反射实例化为对应标注了 @Configuration的JavaConfig形式的IOC容器配置类 ,
然后将这些都汇总成为一个实例并加载到IOC容器中。

结论:
1、SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值
2、将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;
3、整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;
4、它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;
有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作;

参考来源:https://www.cnblogs.com/hellokuangshen/p/12450327.html

三、主程序

这个类主要做了以下四件事情,具体见上一个连接
1、推断应用的类型是普通的项目还是Web项目
2、查找并加载所有可用初始化器 , 设置到initializers属性中
3、找出所有的 应用程序监听器, 设置到listeners属性中
4、推断并设置main方法的定义类,找到运行的主类

一个只会点点点的测试,有疑问可以在测试群(群号:330405140)问我
原文地址:https://www.cnblogs.com/yinwenbin/p/15179689.html