SpringBoot学习笔记01——springboot初探

该笔记参照【狂神说Java】SpringBoot最新教程IDEA版通俗易懂完成,如有需要请自行观看。。。

相关素材已放百度网盘,如需,自取:
链接:https://pan.baidu.com/s/1waKyNJYCnHilTp6Q-PBa6g

提取码:selt

1. 什么是Spring

Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:Rod Johnson。

Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。

2. Spring是如何简化Java开发的

为了降低Java开发的复杂性,Spring采用了以下四种关键策略:

1、基于POJO的轻量级和最小侵入性编程;

2、通过IOC,依赖注入(DI)和面向接口实现松耦合;

3、基于切面(AOP)和惯例进行声明式编程;

4、通过切面和模版减少样式代码;

3. 什么是 SpringBoot

SpringBoot所具备的特征有:

(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;

(2)内嵌Tomcat或Jetty等Servlet容器;

(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;

(4)尽可能自动配置Spring容器;

(5)提供准备好的特性,如指标、健康检查和外部化配置;

(6)绝对没有代码生成,不需要XML配置。

4.第一个SpringBoot程序

  • jdk 1.8
  • maven 3.6.1
  • springboot
  • IDEA

官方:提供了一个快速生成网站!IDEA集成了在这个网站!

  • 可以在官网直接下载后,导入idea开发
  • 直接使用idea创建一个springboot项目(一般开发直接在IDEA创建)

springboot banner 换标志

https://www.bootschool.net/ascii/

在resource目录下新建banner.txt;

把自己喜欢的标志复制进去即可;、

当banner.txt文件图标出现与application.properties文件图标一样的角标时说明成功,重启即可。

5.原理初探

自动配置:

pom.xml

  • spring-boot-dependencies:核心依赖在父工程中
  • 我们在写或者引入一些springboot依赖的时候,不需要指定版本,就因为有这些版本仓库。

启动器

  • <dependency>
          <groupId>org.springframework.bootgroupId>
           <artifactId>spring-boot-starterartifactId>
    dependency>
    
    
  • 启动器:说白了就是springboot的启动场景;

  • 比如spring-boot-starter-web,他就会自动帮我们导入web环境所有的依赖;

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

  • 我们要使用什么功能,就只需要找到对应的启动器就可以了starter

主程序

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

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

}
  • 注解:

    @SpringBootConfiguration :springboot 的配置
        @Configuration:spring配置类
      @Component:说明这也是一个spring的组件
        
    @EnableAutoConfiguration:自动配置
        @AutoConfigurationPackage:自动配置包
        	@Import({
           Registrar.class}):自动配置·包注册·
        @Import({
           AutoConfigurationImportSelector.class}):自动导入选择
    
        
        
    //获取所有的配置
     List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);
    
    //获取候选的配置
    protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
           
            List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.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 :自动配置核心文件

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

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

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

3.以前我们需要自动配置的东西,现在springboot帮我们做了!

4.整合javaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure-2.2.0.RELEASE.jar这个包下

5.它会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器;

6.容器中也会存在非常多的xxxAutoConfigration的文件(@Bean),就是这些类给容器中导入了这个场景需要的所有组件;并自动配置,@Configration,JavaConfig

7.有了自动装配类,免去了我们手动编写配置文件的工作!

你可能感兴趣的:(SpringBoot)