美文网首页
spring boot 入门

spring boot 入门

作者: 原点_da4e | 来源:发表于2019-10-29 16:44 被阅读0次

    spring boot 特性

    SpringApplication 应用类
    自动配置
    外化配置
    内嵌容器
    Starter 组件
    还有对日志、Web、消息、测试及扩展等支持。
    SpringApplication
    SpringApplication 是 Spring Boot 应用启动类,在 main() 方法中调用 SpringApplication.run() 静态方法,即可运行一个 Spring Boot 应用。简单使用代码片段如下:

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

    Spring Boot 运行的应用是独立的一个 Jar 应用,实际上在运行时启动了应用内部的内嵌容器,容器初始化 Spring 环境及其组件并启动应用。也可以使用 Spring Boot 开发传统的应用,只要通过 Spring Boot Maven 插件将 Jar 应用转换成 War 应用即可。

    自动配置
    Spring Boot 在不需要任何配置情况下,就直接可以运行一个应用。实际上,Spring Boot 框架的 spring-boot-autoconfigure 依赖做了很多默认的配置项,即应用默认值。这种模式叫做 “自动配置”。Spring Boot 自动配置会根据添加的依赖,自动加载依赖相关的配置属性并启动依赖。例如,默认用的内嵌式容器是 Tomcat ,端口默认设置为 8080。

    外化配置
    Spring Boot 简化了配置,在 application.properties 文件配置常用的应用属性。Spring Boot 可以将配置外部化,这种模式叫做 “外化配置”。将配置从代码中分离外置,最明显的作用是只要简单地修改下外化配置文件,就可以在不同环境中,可以运行相同的应用代码。

    内嵌容器
    Spring Boot 启动应用,默认情况下是自动启动了内嵌容器 Tomcat,并且自动设置了默认端口为 8080。另外还提供了对 Jetty、Undertow 等容器的支持。开发者自行在添加对应的容器 Starter 组件依赖,即可配置并使用对应内嵌容器实例。

    Starter 组件
    Spring Boot 提供了很多 “开箱即用” 的 Starter 组件。Starter 组件是可被加载在应用中的 Maven 依赖项。只需要在 Maven 配置中添加对应的依赖配置,即可使用对应的 Starter 组件。例如,添加 spring-boot-starter-web 依赖,就可用于构建 REST API 服务,其包含了 Spring MVC 和 Tomcat 内嵌容器等。

    多种Starter组件
    Web:Spring Web、Spring WebFlux 等
    模板引擎:Thymeleaf、FreeMarker、Groovy、Mustache 等
    SQL:MySQL 、H2 等
    NoSQL:Redis、MongoDB、Cassandra、Elasticsearch 等
    验证框架:Hibernate Validator、Spring Validator 等
    日志框架:Log4j2、Logback 等
    测试:JUnit、Spring Boot Test、AssertJ、Mockito 等
    内嵌容器:Tomcat、Jetty、Undertow 等

    快速入门工程

    在搭建一个 Spring Boot 工程应用前,需要配置好开发环境及安装好开发工具:

    JDK 1.8+
    Spring Boot 2.x 要求 JDK 1.8 环境及以上版本。另外,Spring Boot 2.x 只兼容 Spring Framework 5.0 及以上版本。
    Maven 3.2+
    为 Spring Boot 2.x 提供了相关依赖构建工具是 Maven,版本需要 3.2 及以上版本。使用 Gradle 则需要 1.12 及以上版本。本书使用 Maven 对 Spring Boot 工程进行依赖和构建管理。
    IntelliJ IDEA
    IntelliJ IDEA (简称 IDEA)是常用的开发工具,也是本书推荐使用的。同样使用 Eclipse IDE,也能完成本书的实践案例。另外,本书的工程都会在 GitHub 上开源,如需要请自行安装 Git 环境。
    注意:
    JDK 安装、Maven 安装、Git 安装和 IntelliJ IDEA 开发工具安装详解,见附录 A

    安装环境虽然耗时,但磨刀不误砍柴工。下面开发 “Hello Spring Boot” 工程,大致分下面三个步骤:

    创建工程

    利用 spring Initializr 插件创建工程

    开发工程

    1.Pom 依赖
    parent 节点配置是 Spring Boot 的 Parent 依赖

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

    spring-boot-starter-parent 依赖,是 Spring Boot 提供的一个特殊的 Starter 组件,本身没有任何依赖。

    spring-boot-starter-parent 职责,一方面是用于提供 Maven 配置的默认值,即在 Spring Boot 2.x 中设置 JDK 1.8 为默认编译级别、设置 UTF-8 编码等。另一方面,其父依赖 spring-boot-dependencies 中的 dependency-management 节点提供了所有 Starter 组件依赖配置的缺省版本值,但不提供依赖本身的继承。这样的作用是使用各个组件依赖拿来即用,不需要指定 version

    2.应用启动类
    在工程 src 目录中,已经自动创建了包目录 demo.springboot ,其包下自动创建了 Spring Boot 应用启动类,代码如下:

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

    Spring Boot 应用启动类,是可以用来启动 Spring Boot 应用。其包含了 @SpringBootApplication 注解和 SpringApplication 类,并调用 SpringApplication 类的 run() 方法,就可以启动该应用。

    @SpringBootApplication 注解
    @SpringBootApplication 注解用标注启动类,被标注的类为一个配置类,并会触发自动配置和 Starter 组件扫描。根据源码可得,该注解配置了 @SpringBootConfiguration、 @EnableAutoConfiguration 和 @ComponentScan 三个注解, @SpringBootConfiguration 注解又配置了 @EnableAutoConfiguration 。所以该注解的职责相当于结合了 @Configuration, @EnableAutoConfiguration 和 @ComponentScan 三个注解功能。

    @SpringBootApplication 注解的职责如下:

    在被该注解修饰的类中,可以用 @Bean 注解来配置多个 Bean 。应用启动时,Spring 容器会加载 Bean 并注入到 Spring 容器。
    启动 Spring 上下文的自动配置。基于依赖和定义的 Bean 会自动配置需要的 Bean 和类。
    扫描被 @Configuration 修饰的配置类。也会扫描 Starter 组件的配置类,并启动加载其默认配置
    SpringApplication 类
    大多数情况下,在 main 方法中调用 SpringApplication 类的静态方法 run(Class, String[]) ,用来引导启动 Spring 应用程序。默认情况下,该类的职责会执行如下步骤:
    – 创建应用上下文 ApplicationContext 实例
    – 注册 CommandLinePropertySource,将命令行参数赋值到 Spring 属性
    – 刷新应用上下文,加载所有单例
    – 触发所有 CommandLineRunner Bean

    在实际开发中如果需要自定义创建高级的配置,可以通过 run(Class, String[]) 方法的第二个参数,并以 String 数组的形式传入。这是 run 几个重载方法的 API 文档:

    API org.springframework.boot.SpringApplication
    static run(Class>[] primarySources, String[] args)
    返回正在运行的应用上下文 ApplicationContext
    参数:
    primarySources 应用指定的主要类源,数组形式
    args 应用参数

    static run(Class> primarySource, String… args)
    返回正在运行的应用上下文 ApplicationContext

    参数:
    primarySource 应用指定的主要类源
    args 应用参数

    run(String… args)
    返回正在运行的应用上下文 ApplicationContext

    参数:
    args 应用参数

    3.控制层
    在工程中新建包目录 demo.springboot.web ,并在目录中创建名为 HelloController 的控制层类,代码如下:

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class HelloController {
    
        @RequestMapping(value = "/hello",method = RequestMethod.GET)
        @ResponseBody
        public String sayHello() {
            return "Hello,Spring Boot!";
        }
    }
    

    上面定义了简单的 REST API 服务,即 GET:/hello。表示该 Hello 控制层 sayHello() 方法会提供请求路径为 /hello 和请求方法为 GET 的 HTTP 服务接口。Spring 4.0 的注解 @RestController 支持实现 REST API 控制层。本质上,该注解结合了 @Controller 和 @ResponseBody 的功能。所以将上面 HelloController 可以改造升级成 HelloBookController,代码如下:

    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloBookController {
    
        @RequestMapping(value = "/book/hello",method = RequestMethod.GET)
        public String sayHello() {
            return "Hello,《Spring Boot 2.x 核心技术实战 - 上 基础篇》!";
        }
    }
    

    spring mvc 知识点
    @Controller 注解
    @Controller 对控制层类进行标注,职责是使控制层可以处理 HTTP 请求,简单可以理解为,使控制层能接受请求,处理请求并响应。
    @RequestMapping 注解
    @RequestMapping 对控制层类的方法进行标注,职责是标明方法对应的 HTTP 请求路由的关系映射。参数 value 主要请求映射地址,可接受多个地址。参数 method 标注 HTTP 方法,常用如: GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE。默认是 GET HTTP 方法,在 GET 请求的情况下,可以缩写成 @RequestMapping(value = "/book/hello") 。Spring 4 支持直接使用 XXXMapping 形式的注解,比如上面代码可以写成 @GetMapping("/book/hello")。
    @ResponseBody 注解
    @ResponseBody 对控制层类的方法进行标注,职责是指定响应体为方法的返回值。上面代码中,案例是以字符串的形式返回,自然可以使用其他复杂对象作为返回体。

    运行工程

    maven编译工程

    使用 IDEA 右侧工具栏,点击 Maven Project Tab ,点击使用下 Maven 插件的 install 命令

    cd chapter-1-spring-boot-quickstart
    mvn clean install
    ```在 target 目录中看到 chapter-1-spring-boot-quickstart-1.0.jar 文件生成,或者在编译的控制台中看到成功的输出
    
    运行工程三种方式
    1.在 IDEA 中执行 QuickStartApplication 类启动,任意正常模式或者 Debug 模式。可以在控制台看到成功运行的输出
    2.通过 Maven 运行,需要配置 Spring Boot Maven 插件,在 pom.xml 配置文件中,新增 build 节点并配置插件 spring-boot-maven-plugin
    

    <build>
    <plugins>

    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>

    在工程根目录中,运行如下 Maven 命令来运行 Spring Boot 应用:
    
    mvn spring-boot:run
    
    实际调用的是 pom.xml 配置的 Spring Boot Maven 插件 spring-boot-maven-plugin ,上面执行了插件提供的 run 指令。也可以在 IDEA 右侧工具栏的 Maven Project Tab 中,找到 Maven 插件的 spring-boot-maven-plugin,执行相应的指令
    
    

    生成构建信息文件

    spring-boot:build-info

    帮助信息

    spring-boot:help

    重新打包

    spring-boot:repackage

    运行工程

    spring-boot:run

    将工程集成到集成测试阶段,进行工程的声明周期管理

    spring-boot:start
    spring-boot:stop

    
    3.java命令
    使用 Maven 或者 Gradle 安装工程,生成可执行的工程 jar 后,运行如下 Java 命令来运行 Spring Boot 应用:
    
    java -jar target/chapter-1-spring-boot-quickstart-1.0.jar 
    这里运行了 spring-boot-maven-plugin 插件编译出来的可执行 jar 文件
    
    
    #服务器部署
    基础环境安装如上面说的,需要 JDK 环境、Maven 环境等
    
    1.5.1 Win 服务器
    推荐使用 AlwaysUp:
    
    ![file](https://img.haomeiwen.com/i14139287/6cd1fef3e3573bd4.jpeg)
    
    使用方式也很简单:
    
    ![file](https://img.haomeiwen.com/i14139287/05ed3b0cd7de0969.jpeg)
    
    1.5.2 Linux 服务器
    推荐 yum 安装基础环境,比如安装 JDK:
    
    yum -y list java*
    yum -y install java-1.8.0-openjdk*
    java -version 
    安装 Maven:
    
    yum -y list apache-maven
    sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
    sudo yum install -y apache-maven
    mvn --v
    Linux 使用 nohup 命令进行对后台程序的启动关闭。
    
    关闭应用的脚本:stop.sh
    
    ![file](https://img.haomeiwen.com/i14139287/bfab05b13066a350.jpeg)
    
    启动应用的脚本:start.sh
    ![file](https://img.haomeiwen.com/i14139287/a545545254ab9b78.jpeg)
    
    
    重启应用的脚本:stop.sh
    
    ![file](https://img.haomeiwen.com/i14139287/e4131bd94404f5f3.jpeg)
    > 本文由博客一文多发平台 [OpenWrite](https://openwrite.cn?from=article_bottom) 发布! 

    相关文章

      网友评论

          本文标题:spring boot 入门

          本文链接:https://www.haomeiwen.com/subject/jgsgvctx.html