springboot 初识

Posted ooo0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 初识相关的知识,希望对你有一定的参考价值。

2.1 Spring Boot介绍

2.1.1 Spring Boot的由来和特点

  Spring Boot是由Spring团队(Pivotal团队)提供的一个全新框架,其设计目的是为了简化Spring应用的初始搭建过程和开发过程。该框架使用了特定的方式来进行配置(提供了默认的代码和注释配置),这使得开发人员不再需要定义样板化的配置,而只需非常少的配置就可以快速地开发基于Spring的应用。
  Spring Boot框架有很多优点,这些优点的具体表现如下。
  1. 可快速构建独立的Spring应用程序
  Spring Boot所创建的应用程序都是独立的JAR包,而不是WAR包,即使是Web应用,也是JAR包,我们可以直接通过JAR包来运行一个Spring应用程序。如果需要,也可以将SpringBoot程序以WAR包的形式部署到服务器。
  2. 内嵌Servlet容器,无需单独安装容器即可独立运行项目
  Spring Boot项目不需要将WAR包部署到Tomcat、Jetty等Servlet容器中,而是在启动时,自动地启动一个嵌入式的Tomcat,我们可以通过application.properties配置Tomcat具体的端口号信息。
  3. 对主流开发框架的无配置集成
  Spring Boot与其他主流框架整合时,只需在pom.xml中添加相应依赖,即可直接使用该框架,无需在项目的配置文件中添加配置。
  4. 提供开箱即用的Spring插件,简化了Maven、Gradle的配置
  Spring Boot提供了大量的开箱即用的插件,开发人员只需添加一段Maven依赖配置即可使用。这些插件在Spring Boot中被称为“Starter”,每一个Starter都有自己独立的配置项。
  5. 自动配置Spring,极大地提高了开发、部署效率
  Spring Boot会根据类路径中的类和JAR包中的类自动配置Bean,而不需要手动配置。这样极大地减少了开发人员的工作内容,从而提高开发和部署的效率。
  6. 无需任何XML配置
  Spring Boot只有一个application.properties配置文件,没有其他XML配置文件。需要注意的是,虽然Spring Boot有很多优点,但是将现有的Spring项目转换为Spring Boot项目还是有一定困难的,它更适用于全新的Spring项目。

2.2 Spring Boot入门

 2.2.1 Spring Boot项目的快速搭建

  Spring Boot项目有多种快速搭建的方式,例如可以通过官网提供的代码生成器Spring Initializr来构建项目,可以使用Maven来手动构建项目,还可以通过Spring Tool Suite (STS)插件来构建项目(创建的是Spring Starter Project)。
  通过Spring官网地址https://start.spring.io/中的代码生成器Spring Initializr可以快速地生成一个Spring Boot项目
技术图片

技术图片

技术图片

 

技术图片
  小提示:Spring Boot提供的自动配置依赖模块都约定以spring-boot-starter-作为命名的前缀,并且都位于org.springframework.boot包或者命名空间下。开发者在使用和整合模块时,只需要引入对应的模块,而不需要像传统Maven项目那样添加大量的依赖包。

  多学一招:使用Maven构建Spring Boot项目
  虽然使用官网提供的代码生成器Spring Initializr来构建项目非常简单、方便和快速,但此种方式要求必须连接Spring Initializr的网址。在上文中我们已经讲解过,除了使用官网代码生成器的方式来构建项目外,还可以使用Maven手动方式构建项目,那么要如何构建呢?
  Maven手动构建方式的实现非常简单,同样以hello工程为例,构建时只需要如下3步。
  (1)新建一个简单的Maven工程hello,并在工程的pom.xml中添加Spring Boot的相关依赖(内容请参见文件2-3)。
  (2)在工程的src/main/java源文件夹中创建com.itheima.web包,并在包中创建引导类HelloApplica-tion.java(实现代码请参见文件2-1)。
  (3)在src/main/resources源文件夹中创建配置文件application.properties。如果是web项目,还需要创建文件夹static和templates。
  通过上面3步,一个简单的Spring Boot项目就已经搭建完成。可以看出,Spring Boot项目其实就是Maven项目,与Maven项目的构建方式一致。一般来说,开发人员可能会更习惯于使用Maven手动构建的方式来构建项目,初学者可以根据自身情况去选择使用何种方式来构建。由于通过STS插件的方式非常简单,只需要根据插件内容提示操作就可以完成项目的构建,因此这里就不多做讲解了,读者可自行练习使用。

2.2.2 第一个Spring Boot程序

  文件2-4 HelloController.java
package com.xc.springboot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController 

    /**
     * http://127.0.0.1:8081/hello
     */
    @RequestMapping("/hello")
    public String hello() 
        return "hello world!";
    

 

  在文件2-4中,@RestController注解相当于@[email protected]组合在一起使用,此注解所标注类中方法的返回值返回的将不是视图页面,而是return语句中的内容。
  小提示:除了执行Spring Boot App可以启动项目外,执行图2-4中的JavaApplication同样也可以启动。此外,还可以使用Maven将项目打成jar包,然后在命令提示符窗口执行java-jar xxx.jar(xxx表示jar包名称)来启动项目,或者在Eclipse的Maven build中使用spring-boot:run配置来启动项目。 
 

2.3 Spring Boot的工作机制

 2.3.1 @SpringBootApplication

  @SpringBootApplication是Spring Boot的核心注解,并且它是一个复合注解。
  ·@SpringBootConfiguration:该注解与@Configuration的作用相同,它表示其标注的类是IoC容器的配置类。
  ·@EnableAutoConfiguration:用于将所有符合自动配置的Bean加载到当前Spring Boot创建并使用的IoC容器中。
  ·@ComponentScan:用于自动扫描和加载符合条件的组件或Bean,并将Bean加载到IoC容器中。

2.3.2 SpringApplication

  在Spring Boot项目的main()方法中,SpringApplication.run(HelloApplication.class, args)是唯一执行的方法体,该方法体的执行过程可分为两部分来看,具体如下。
  1. 创建SpringApplication对象
  在SpringApplication实例初始化时,它会做如下几项工作。
  (1)根据classpath内是否存在某个特征类来判断是否为Web应用,并使用webEnvironment标记是否为Web应用。
  (2)使用SpringFactoriesLoader在classpath中的spring.factories文件查找并加载所有可用的ApplicationContextInitializer。
  (3)使用SpringFactoriesLoader在classpath中的spring.factories文件查找并加载所有可用的ApplicationListener。
  (4)推断并设置main()方法的定义类。
  2. 调用实例的run()方法
  run()方法是Spring Boot执行流程的主要方法,该方法执行时,主要做了如下工作。
  (1)查找并加载spring.factories中配置的SpringApplicationRunListener,并调用它们的started()方法。告诉SpringApplicationRunListener,Spring Boot应用要执行了。
  (2)创建并配置当前Spring Boot应用要使用的Environment,然后遍历调用所有SpringApplicationRunListener的environmentPrepared()方法。告诉SpringBoot应用使用的环境准备好了。
  (3)如果SpringApplication的showBanner属性被设置为true,则打印banner。
  (4)根据用户是否明确设置了applicationContextClass类型,以及初始化阶段(创建SpringApplication对象的第(1)步)的推断结果来决定当前Spring Boot应用创建什么类型的ApplicationContext。
  (5)创建故障分析器。故障分析器用于提供错误和诊断信息。
  (6)对ApplicationContext进行后置处理。对所有可用的ApplicationContextInitializer遍历执行initialize()方法;遍历调用所有SpringApplicationRunListener的environmentPrepared()方法;将之前通过@EnableAutoConfiguration获取的所有配置以及其他形式的IoC容器配置加载到已经准备完毕的ApplicationContext;遍历调用所有SpringApplicationRunListeners的contextLoaded()方法。
  (7)调用refreshContext()方法执行applicationContext的refresh()方法。
  (8)查找当前ApplicationContext中是否有Application-Runner和CommandLineRunner,如果有,则遍历执行它们。
  (9)正常情况下,会遍历执行所有SpringApplicationRunListener的finished()方法;如果出现异常,也会调用该方法,只不过这种情况下会将异常信息一并传入处理。
技术图片

 


技术图片
文章来源:微服务架构基础SSD 2

以上是关于springboot 初识的主要内容,如果未能解决你的问题,请参考以下文章

初识SpringBoot

初识springboot

springboot 初识

初识gradle, idea+springboot Demo

初识springboot

初识Springboot