0%

SpringBoot快速入门

配置

首先,配置文件我们一般用yml格式,且可以分环境在classpath下,创建application.yml为主配置文件

下来可以创建文件名规范为application-__.yml的yml文件

例如application-dev.yml,application-prod.yml

在主配置文件application.yml做以下配置,即可使用application-dev.yml下的配置信息;

注意,无论使用哪个子配置文件,主配置文件中的配置都会生效(相当于通用配置),若子配置文件覆盖掉主配置文件中的相同信息,则最终为子文件中的配置

一些基本配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server:
port: 8080
servlet:
context-path: /your-context-path
spring:
profiles:
#选用dev配置文件
active: dev
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dataBaseName?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
jpa:
hibernate:
#第一次运行使用create自动生成表,一般使用update
ddl-auto: create
#控制台打印出SQL语句
show-sql: true
#使用MySQL方言,为了自动生成数据库时使用InnoDB
database-platform: org.hibernate.dialect.MySQL8Dialect

启动方式

  1. 开发工具启动

  2. 项目目录下执行 :mvn springboot:run

  3. 生产环境

    1. 项目目录下执行 mvn clean package编译项目

    2. 成功后执行cd target进入编译生成的target目录

    3. 执行java -jar JAR包文件名 启动(这里启动时,可以配置参数,以指定SpringBoot的配置文件)

      java -jar 文件名.jar --spring.profiles.active=prod 这样就可以用application-prod.yml启动

常用注解

1
2
3
4
5
6
7
8
9
10
11
12
# yml:

##自定义配置1(使用@Value注入变量)
customParameter1:
sonPara: 1
####使用配置文件中的参数:customParameter2 的实际值为"最小数为1"
customParameter2: 最小数为${customParameter1.sonPara}

##自定义配置2(直接注入对象)
limit:
ANum: 1
BNum: ${limit.minNum}
  • @Value("") 用在 配置变量 的定义上

    主要用于单个自定义配置

    配置文件中自定义的参数0注入类变量 ,相比于下面的配置类批量注入来说比较繁琐

    1
    2
    3
    4
    5
    //CustomParConfig.java
    @Value("${customParameter1}")
    private String myCustomPar1;
    @Value("${customParameter2}")
    private String myCustomPar2;
  • @ConfigurationProperties(perfix = "")配合@Component 写在配置类上

    主要用于多个自定义配置

    该注释可直接将自定义配置批量注入配置类

    1
    2
    3
    4
    5
    6
    7
    8
    //LimitConfig.java
    @Component
    @ConfigurationProperties(prefix = "limit")
    public class LimitConfig {
    private Integer ANum;
    private Integer BNum;
    //省略get()和set()
    }

    这样就可以直接将 .yml 中的参数封装到配置类中,其他地方获取只需用@Autowired注入即可


  • @RestController 用在Contorller类上

    代替了@Controller,并且还相当于在类的所有方法上都加@ResponseBody注解,即该类下的所有方法都会返回字符串,一般用于返回json格式数据

    1
    2
    3
    4
    5
    6
    //本类中访问根url为http://localhost:8080/hw/...
    @RestController()
    @RequestMapping("/hw")
    public class HelloController {
    //omit....
    }
  • @RequestMapping配置url映射

    1
    2
    3
    4
    5
    6
    //postman中以POST请求访问url:url:http://localhost:8080/hw/say
    @RequestMapping(value = "/say",method = RequestMethod.POST)
    public String say() {
    return "100"
    }
    //页面返回值:100
  • @___Mapping系列:GetMapping ,PostMapping,

    映射单个url:@GetMapping(“url”)

    映射多个url:@GetMapping({“/url1”,”/url2”})

  • @PathVariable("") 获取url中的数据

    1
    2
    3
    4
    5
    6
    //url:http://localhost:8080/hw/say/100
    @GetMapping("/say/{id}")
    public String say(@PathVariable("id")Integer myId ) {
    return String.valueOf(myId);
    }
    //页面返回值:100
  • @RequestParam("") 获取请求参数的值,也可以选择不传参数,使用默认值

    1
    @RequestParam( value = "id",required = false,defaultValue = "0")
    1
    2
    3
    4
    5
    6
    7
    8
    //url:http://localhost:8080/hw/say?100
    //或者url:http://localhost:8080/hw/say
    //使用form-urlencoded
    @GetMapping("/say")
    public String say(@RequestParam("id")Integer myId ) {
    return String.valueOf(myId);
    }
    //页面返回值:100
  • 使用JPA自动创建表时,有如下的yml配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    spring:
    jpa:
    hibernate:
    #第一次运行使用create自动生成表,一般使用update
    ddl-auto: create
    #控制台打印出SQL语句
    show-sql: true
    #使用MySQL方言,为了自动生成数据库时使用InnoDB
    database-platform: org.hibernate.dialect.MySQL8Dialect

    相应的实体类的类:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /*
    *注意,以下注解都为:'javax.persistence'包下
    */
    @Entity//声明需要自动创建表的实体类
    @Table("table_name")//指定表名,缺省值为驼峰类名的转换:lucky_money
    public class MyEntity {
    /*
    *'@id' 指定主键
    *'@GeneratedValue' 配置自增列,并声明自增策略
    *详情参见:'https://blog.csdn.net/zhangli0910/article/details/83580855'
    */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    //必须有一个无参构造器
    MyEntity(){}

    //省略get和set方法
  • @Transactional 用在映射方法上,使方法中的服务以事务执行

    // org.springframework.transaction.annotation.Transactional

RESTful API

最基本的API设计

请求类型 请求路径 功能
GET /context-path 查询条目列表
POST /context-path 创建单个记录
GET /context-path/id 查询单个记录
PUT /context-path/id 更新单个记录
DELETE /context-path/id 删除单个记录