SpringBoot101——第一个接口

个人学习笔记,仅作分享。

成品代码

 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
package top.suyiiyii;

import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@SpringBootApplication
public class MyApplication {

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

    @GetMapping("/health")
    String health() {
        return "OK";
    }

    @GetMapping("/server_info")
    ServerInfo serverInfo() {
        ServerInfo info = new ServerInfo();
        info.setMessage("SpringBoot101 server by suyiiyii.");
        return info;
    }

    @GetMapping("/all_grades")
    List<Grade> allGrades() {
        return List.of(
                new Grade("20180001", 90),
                new Grade("20180002", 80),
                new Grade("20180003", 70)
        );
    }


    @Data
    public static class ServerInfo {
        private String message;
    }

    @Data
    @AllArgsConstructor
    public static class Grade{
        private String studentid;
        private int grade;
    }
}

RequestMappingGetMapping

RequestMapping 默认会注册这个接口的所有方法,也就是说会忽略方法,除非显式设置@RequestMapping(value = "/", method = RequestMethod.GET)

为了编写方便,引入 GetMapping@PostMapping,相当于RequestMapping 加上特定的方法的配置

方法的返回和 JSON

因为添加了@RestController,所以默认会将方法的返回内容 JSON 化然后响应。

注意!单独返回一个 String,不会在 String 两边加双引号

1
2
3
4
    @GetMapping("/health")
    String health() {
        return "OK";
    }

这个返回的是 OK,不是”OK”!!

Controller 和 Mapping

Controller 是类级别的,Mapping 是方法级别的。

一般按照业务划分控制器界限,每个控制器负责一个特定的业务功能。

JavaBean、bean、POJO、PO、DTO、VO、BO

bookmark

bookmark

DataSource

在编程和数据库管理中,数据源(DataSource)是一个用于存储、检索和管理数据的对象。它可以是一个数据库,如 MySQL、PostgreSQL 或 SQLite,也可以是一个文件,如 CSV 或 JSON 文件,甚至可以是一个 API 或 Web 服务。

在 Java 和 Spring 框架中,DataSource 是一个接口,它代表了一个数据库连接池。DataSource 对象可以被用来获取数据库连接,执行 SQL 查询,并处理结果。使用 DataSource 而不是直接使用数据库连接有几个优点,包括:

  • 连接池:DataSource 可以管理一个连接池,这意味着它可以重用已经存在的数据库连接,而不是为每个请求创建一个新的连接。这可以大大提高应用程序的性能。
  • 事务管理:DataSource 可以提供对事务的支持,这使得你可以在一个数据库会话中执行多个操作,而且可以选择在出现错误时回滚所有的操作。
  • 配置和管理:DataSource 可以被配置为自动处理一些常见的数据库任务,如连接超时、连接重试等。

在 Spring Boot 应用中,你可以在 application.propertiesapplication.yml 文件中配置 DataSource,例如:

1
2
3
4
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

这些配置将被用来创建一个 DataSource 对象,你可以在你的代码中注入这个对象,并使用它来执行数据库操作。

临时数据库

在开始一个新项目并需要一个临时的数据库进行测试时,你可以选择使用内存数据库,如 H2、HSQLDB 或 Derby。这些数据库在应用程序启动时创建,并在应用程序关闭时销毁,非常适合进行测试和开发。

Spring Boot 可以自动配置 H2、HSQLDB 和 Derby 内存数据库。你只需要在你的 pom.xml 文件中添加相应的依赖,Spring Boot 就会自动配置一个 DataSource。

例如,如果你选择使用 H2 数据库,你可以添加以下依赖:

1
2
3
4
5
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

然后,在你的 application.propertiesapplication.yml 文件中,你可以配置 DataSource 的 URL,用户名和密码。对于 H2 内存数据库,URL 通常是jdbc:h2:mem:testdb,用户名和密码可以是任何值。

1
2
3
4
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=password
spring.datasource.driver-class-name=org.h2.Driver

这样,当你的应用程序启动时,Spring Boot 会自动创建一个 H2 内存数据库,并配置一个 DataSource 对象供你使用。

Licensed under CC BY-NC-SA 4.0