zoukankan      html  css  js  c++  java
  • 2、Spring Boot 2.x 快速入门

    1.2 Spring Boot 快速入门

    1.2.1 开发环境和工具

    • 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 及以上版本。
    • IntelliJ IDEA:IntelliJ IDEA (简称 IDEA)是常用的开发工具,也是本文推荐使用的,同样使用 Eclipse IDE,也能完成本文的实践案例。另外,本文的工程都会在 GitHub 上开源,如需要请自行安装 Git 环境。
    • 本文代码地址: https://github.com/JiaoHongwei/Spring-Boot-Demos

    1.2.2 创建工程 “Hello Spring Boot”

    • 在 IDEA 中,利用 Spring Initializr 插件进行创建;
    • 访问网站 https://start.spring.io/ 进行在线生成Spring Boot项目打包下载到本地;
    • 下载安装 Spring Boot CLI脚手架进行快速创建。

    1.2.2 Creating the POM

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.hw</groupId>
        <artifactId>spring-boot-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>spring-boot-demo</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    
    
    

    1.2.3 开发工程之应用启动类

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

    package com.hw.springbootdemo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class SpringBootDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootDemoApplication.class, args);
        }
    }
    
    
    1.2.3.1 @SpringBootApplication 注解
    • 该注解用标注启动类,被标注的类为一个配置类,并会触发自动配置和 Starter 组件扫描。
    • @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan
    • 注解的职责如下:
      1. 在被该注解修饰的类中,可以用 @Bean 注解来配置多个Bean。应用启动时,Spring 容器会加载Bean并注入到 Spring 容器;
      2. 启动 Spring 上下文的自动配置。基于依赖和定义的 Bean 会自动配置需要的 Bean 和类;
      3. 扫描被 @Configuration 修饰的配置类。也会扫描 Starter 组件的配置类,并启动加载其默认配置。
    1.2.3.2 SpringApplication 类

    大多数情况下,在 main 方法中调用 SpringApplication 类的静态方法 run(Class, String[]) ,用来引导启动 Spring 应用程序。默认情况下,该类的职责会执行如下步骤:

    1. 创建应用上下文 ApplicationContext 实例;
    2. 注册 CommandLinePropertySource,将命令行参数赋值到 Spring 属性;
    3. 刷新应用上下文,加载所有单例;
    4. 触发所有 CommandLineRunner Bean。

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

    1.2.4 开发工程之 Hello 控制层类

    • 在pom.xml 文件中添加spring-boot-starter-web依赖。
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
    • 在com.hw.springbootdemo下面(SpringBootDemoApplication.java同级)新建web包,并添加HelloController.java文件,内容如下,添加控制层代码。
    • 访问 http://localhost:8080/api/v1/hello
    package com.hw.springbootdemo.web;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @Description TODO
     * @Author hw
     * @Date 2018/11/18 20:47
     * @Version 1.0
     */
    @RestController
    @RequestMapping("api/v1")
    public class HelloController {
    
        @GetMapping("hello")
        public String hello() {
            return "Hello Spring Boot!";
        }
    }
    
    
    • 上面定义了简单的 REST API 服务,即 GET:/api/v1/hello。表示该 Hello 控制层 hello() 方法会提供请求路径为 /api/v1/hello 和请求方法为 GET 的 HTTP 服务接口。
    • Spring 4.0 的注解 @RestController 支持实现 REST API 控制层。本质上,该注解结合了 @Controller 和 @ResponseBody 的功能。
    • @GetMapping = @RequestMapping(value = "hello",method = RequestMethod.GET),类似的还有@PostMapping、@PutMapping、@DeleteMapping。
    1.2.4.1 @Controller 注解

    @Controller 对控制层类进行标注,职责是使控制层可以处理 HTTP 请求,简单可以理解为,使控制层能接受请求,处理请求并响应。

    1.2.4.2 @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")。
    1.2.4.3 @ResponseBody 注解

    @ResponseBody 对控制层类的方法进行标注,职责是指定响应体为方法的返回值。上面代码中,案例是以字符串的形式返回,自然可以使用其他复杂对象作为返回体。

  • 相关阅读:
    Linux下解压分包文件zip(zip/z01/z02)
    Ubuntu 16.04安装Notepadqq编辑器替代Notepad++
    Ubuntu 16.04安装NASM汇编IDE-SASM
    java命令--jstack 工具
    详述 hosts 文件的作用及修改 hosts 文件的方法
    译:Java 中的正则表达式性能概述
    译:25个面试中最常问的问题和答案
    Android中使用GoogleMap的地理位置服务
    Android 从imageview中获得bitmap的方法
    Android通过百度地图API用Service和Alarm在后台定时获取地理位置信息
  • 原文地址:https://www.cnblogs.com/Grand-Jon/p/9985058.html
Copyright © 2011-2022 走看看