zoukankan      html  css  js  c++  java
  • 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注解相当于@Controller+@ResponseBody组合在一起使用,此注解所标注类中方法的返回值返回的将不是视图页面,而是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
  • 相关阅读:
    bootstrap-图片样式记录
    关于json数据中的多反斜杆转译--StringEscapeUtils.unescapeJava(踩过的坑)
    Nginx与tomcat组合的简单使用
    多进程之间的互斥信号量的实现(Linux和windows跨平台)
    跨平台(win和unix)的线程封装类
    linux 静态库、共享库
    WinMain与wWinMain,win32的字符集问题
    linux下添加动态链接库路径、动态库加载等方法
    win系统动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
    dll程序开发总结
  • 原文地址:https://www.cnblogs.com/ooo0/p/11145834.html
Copyright © 2011-2022 走看看