springboot原理

1.1.什么是springboot

SpringBoot是Spring项目中的一个子工程

其实人们把Spring Boot 称为搭建程序的脚手架。其最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让我们关注与业务而非配置。

让我们写更少的代码!

1.2.为什么要学习SpringBoot

java一直被人诟病的一点就是臃肿、麻烦。当我们还在辛苦的搭建项目时,可能Python程序员已经把功能写好了,究其原因注意是两点:

  • 一个是复杂的配置,

    需要些大量的配置,这就需要大量的代码!让整个项目看着一点都不优雅!

  • 一个是混乱的依赖管理。

    决定项目里要用哪些库就已经够让人头痛的了,

    主要是依赖版本之间的冲突,这难题实在太棘手。并且,依赖管理也是一种损耗

而SpringBoot让这一切成为过去!

Spring Boot 简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置,存放默认配置的包就是启动器starter),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。

我们可以使用SpringBoot创建java应用,并使用java –jar 启动它,就能得到一个生产级别的web工程。

1.3.SpringBoot的特点

Spring Boot 主要目标是:

  • 为所有 Spring 的开发者提供一个非常快速的、广泛接受的入门体验

  • 开箱即用(启动器starter-其实就是SpringBoot提供的一个jar包),但通过自己设置参数(.properties),即可快速摆脱这种方式。

  • 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等

  • 绝对没有代码生成,也无需 XML 配置。

1.4.SpringBoot自动配置的原理

1.我们需要要使用springboot首先需要引入springboot父类工程

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

2.我们开发一个web项目需要引入一个web启动类springboot会给我们自动配置

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

启动类 这个类放在靠前的包下

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

springboot的运行原理:

  • 注解:@SpringBootApplication 启动类上的注解相当于@ComponentScan、@EnableAutoConfiguration、@SpringBootConfiguration这三个注解

    进入@SpringBootApplication 注解上有三个注解

    • 1)@ComponentScan(扫描spring组件注解)

      扫描spring组件的注解,如果不配置属性的话他会扫描所在包以及子包,所以一般我们会将启动类放在靠前的包下

    • 2)@EnableAutoConfiguration(开启自动配置类注解)

      SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库所需的依赖,如果有那么默认配置就会生效。

    • 3)@SpringBootConfiguration(声明是springBoot的配置类)

      进入这个注解发现这个注解上有一个@configuration注解,是声明这是一个配置类的意思,spring会自动扫描添加了@configuration的类 所以我们要把启动类放在最前面的包!因为他默认扫描本包和本包以下的所有子包中的spring组件!

    小结:SpringBoot为我们提供了默认配置,而默认配置生效的条件一般有两个:

    • 1)引入了相关依赖 (web项目,就需要引入web启动器,这样springboot内部会做出判断,这样自定义配置就会生效)

    • 2)你自己没有配置Bean(比如数据源DataSource)如果spring扫描到你自己注入了,他就不会启动默认的数据源连接池

      所以,我们如果不想配置,只需要引入依赖即可,而依赖版本我们也不用操心,因为只要引入了SpringBoot提供的stater(启动器),就会自动管理依赖及版本了。

      因此,玩SpringBoot的第一件事情,就是找启动器,SpringBoot提供了大量的默认启动器

      全局配置:

      另外,SpringBoot的默认配置,都会读取默认属性,而这些属性可以通过自定义application.properties文件来进行覆盖。这样虽然使用的还是默认配置,但是配置中的值改成了我们自定义的。

      因此,玩SpringBoot的第二件事情,就是通过application.properties来覆盖默认属性值,形成自定义配置。我们需要知道SpringBoot的默认属性key,非常多.

      属性文件支持两种格式,application.properties和application.yml

      yml的语法实例:

      jdbc:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/leyou
        username: root
        password: 123
      ​
      server:
        port: 80

猜你喜欢

转载自blog.csdn.net/adminBfl/article/details/81546151