Java-018-springboot入门

spring参考资料

Spring Boot 入门

@(Programming_Training)[Web]

Spring是什么

Spring Framework 5.0 - The right stack for the right job.

Spring 是 JVM (Java虚拟机) 生态环境里一个提供应用开发需要用到的技术栈整合的框架

最主要的应用场景就是Web开发:

  • Web请求路由
  • HTTP请求解析
  • Session管理
  • MVC架框架
  • 依赖注入
  • 等等…

Spring现在仍然再不断的进化, 比如说最近比较热门的Reactive栈

https://spring.io/img/homepage/diagram-boot-reactor.svg

Spring Boot是什么

Spring Boot是帮助我们快速使用Spring创建应用的工具和框架.

  • 快速开始使用Spring
  • 构建应用 - REST API, WebSocket, Web, Streaming, Tasks, 等等
  • 简化安全
  • 对SQL和NoSQL的丰富支持
  • 内嵌的运行时支持 - Tomcat, Jetty等
  • 提高开发效率的工具
  • 生产环境支持: 跟踪, 指标, 监控
  • 集成IDE

Spring Boot是一个很好的学习Java Web App技术栈平台

把Spring开发中使用到的流程和工具给集成到一起, 然后boot

第一个Spring Boot项目

之前我们学习了如何使用Maven, 那我们来看看如何使用Maven来安装和配置Spring Boot项目

项目创建和配置

  1. 打开IntelliJ创建默认的Maven项目

    1
    2
    3
    groupid 输入  com.xiedaimala.java
    artifactid 输入 hello-world
    version 是默认的
  2. 配置 POM.xml 文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?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.xiedaimala.java</groupId>
    <artifactId>spring-sample</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <scope>test</scope>
    </dependency>
    </dependencies>

    <properties>
    <java.version>1.10</java.version>
    </properties>

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

    <repositories>
    <repository>
    <id>spring-releases</id>
    <url>https://repo.spring.io/libs-release</url>
    </repository>
    </repositories>
    <pluginRepositories>
    <pluginRepository>
    <id>spring-releases</id>
    <url>https://repo.spring.io/libs-release</url>
    </pluginRepository>
    </pluginRepositories>
    </project>
  3. 点击Maven标签里的刷新

使用Spring Boot构建第一个Web程序

Controller

定义Web请求的接收和处理

创建文件: src/main/java/hello/GreetingController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package hello;

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

import java.util.concurrent.atomic.AtomicLong;

@RestController
public class GreetingController {

private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong(); // 原子操作, 因为Spring默认是支持多线程的

@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue = "World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}

结果返回对象

定义处理Web请求的结果对象

创建文件: src/main/java/hello/Greeting.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package hello;

public class Greeting {

private final long id;
private final String content;

public Greeting(long id, String content) {
this.id = id;
this.content = content;
}

public long getId() {
return id;
}

public String getContent() {
return content;
}
}

Web主程序

定义一个Spring程序的入口, Spring负责初始化Context

创建文件: src/main/java/hello/Application.java

1
2
3
4
5
6
7
8
9
10
11
12
package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

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

运行

双击运行spring-boot:run

或者在项目根目录, 运行命令:

mvn spring-boot:run

在浏览器中打开: http://localhost:8080/greeting?name=hjx

代码链接

JVM JRE

Scala, Clojure, Groory

Spring可以说是集成很多应用开发中必须使用到的通用功能的框架和类库, 提供一个开发应用的解决方案

Spring Boot

内置支持Web server

Spring Boot项目配置

功能

  1. 接收用户的请求和用户输入: name
  2. 解析输入, 然会给用户一个json的结构, 里面就是Helle,

Spring Web 程序结构讲解

Controller
Model
层次结构

  1. Spring 接收请求, 解析请求
  2. 属于我们的代码 – 随便写
  3. 可以读取数据库, 做个爬虫
  4. 把结果返回给Spring, Spring再返回用户

Web后端程序调试

Postman