springboot的学习(一):springboot的基础

简介

springboot的基础的知识点的学习总结

springboot

设计目的是为了简化spring应用的初始搭建和开发过程。

简单例子

new project,一般用这个阿里的地址:https://start.aliyun.com/
在这里插入图片描述
点击next,选择jdk版本
在这里插入图片描述
点击next,选择模块
在这里插入图片描述
点击next,填写项目名字
在这里插入图片描述
创建好了项目,还有自动给了简单例子,右键运行DemoApplication启动类。
在这里插入图片描述
在这里插入图片描述
扩展:这个启动类是放到demo包下的,它是会扫描它的上级目录demo下的所有包的,要想扫描到自己写的类,要把类放到启动类的上级目录demo下。

隐藏文件

在这里插入图片描述
项目中有这些用不到的文件,可以隐藏
在这里插入图片描述
在这里插入图片描述

添加不想看到的文件,如HELP.md;*.iml;.idea;点击应用,项目就干净多了
在这里插入图片描述

和spring对比

spring依赖设置繁琐,配置繁琐
springboot简化了依赖配置,简化了常用工程相关配置,内置了服务器

依赖坐标的版本管理

在pom.xml文件中
在这里插入图片描述
由spring-boot-dependencies统一管理依赖坐标的版本,可以避免多个依赖使用相同技术时出现依赖版本的冲突。
也可以继承spring-boot-starter-parent,里面其实还是spring-boot-dependencies

starter

pom.xml中的starter,就是包含了若干个依赖坐标,可以通过这个快速的进行依赖配置。目的是减少依赖配置
在这里插入图片描述
扩展:和parent的区别,parent是所有springboot项目都需要继承的项目,定义了若干个坐标版本号,以达到减少依赖冲突的目的。

引导类

引导类就是application启动类。

 SpringApplication.run(DemoApplication.class, args);

这行代码的运行是启动spring容器,扫描所在包的bean

内嵌Tomcat

原理是将Tomcat服务器作为对象运行,并将该对象交给spring容器管理。
在这里插入图片描述
在这个依赖中包含了Tomcat的依赖了。
如果不想使用Tomcat,可以在pom.xml中使用< exclusions>排除掉Tomcat依赖。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

rest风格

rest,表现形式状态转换,可以隐藏资源的访问行为,不能通过请求地址知道对资源的操作,简洁。他是通过行为动作(请求方式)区分对资源进行的操作的。
请求方式有:

  1. get:查询
  2. post:新增
  3. put:更新
  4. delete:删除

根据rest风格对资源进行访问称为restful。它是一种约定,不是规范,是可以打破的。

在controller中,可以使用@GetMapping,@PostMapping,@PutMapping,@DeleteMapping来接收请求。
方法中使用@PathVariable来接收请求中的参数,在url路径上要配合{参数名}。
如果有多个参数,就封装成对象,转成json对象,然后controller使用@RequestBody来接收json对象。

例子


package com.christ.demo.demos.web;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class BasicController {
    @GetMapping("/{id}")
public void get(@PathVariable Integer id){
        System.out.println("select:"+id);
}
@PostMapping
public void add(@RequestBody User user){
    System.out.println("add" + user.getName());
}
}

postman发送get请求:http://localhost:8080/users/1
在这里插入图片描述
postman发送post请求:http://localhost:8080/users
json格式请求体

{
    "name":"christ",
    "age":18
}

在这里插入图片描述

配置

springboot的基本配置在resource中的application.properties,application.yaml或application.yml中。
如果三个都存在,优先级:application.properties>application.yml>application.yaml
属性相同会覆盖,不同会补充。
在这里插入图片描述

yml

数据序列化格式
格式:值的前面有一个空格

users:
  - name: christ
    age: 18
  - name: jack
    age: 20
users1:
  -
    name: mike
    age: 19
  -
    name: jhon
    age: 21

users2: [{name: jerry,age: 22},{name: luffy,age: 23}]
value: 111
hobbies: [sing,dance,basketball]

读配置文件的值

可以使用@value注解

package com.christ.demo.demos.web;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class BasicController {
    @Value("${users[1].name}")
    private String name;
    
@GetMapping("/getName")
public void readValue(){
    System.out.println(name);
}
}

可以把所有的属性都封装到一个Environment对象中,使用@Autowired自动装配

package com.christ.demo.demos.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class BasicController {
    @Autowired
    private Environment env;

    @GetMapping("/getValue")
    public void readValues(){
        System.out.println(env.getProperty("value"));
}
}

引用值

localValue: test
referenceValue: ${localValue}

测试类

如果测试类在springboot启动类的包或子包中,可以省略启动类的设置,否则,应该在@springbootTest注解上加上属性class指定启动类。

@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {
    @Test
    void contextLoads() {
    }
}

启动类的package
在这里插入图片描述
测试类的package,要在package com.christ.demo或这个的子包下
在这里插入图片描述

前后端数据协议

用于后端和前端进行数据格式的统一。
一般包含code,data,msg。

统一异常处理

使用@RestControllerAdvice和@ExceptionHandler(指定捕获的异常.class)。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值