SpringBoot杂记一

什么叫杂记?就是很杂很乱,没有什么逻辑性,目的就是解决一个一个的小问题。所以一定要看一级标题,一级标题是什么就说明当前在聊什么。


另外,本节内容是对JavaEE专栏Day26—Day29的总结

1.快速入门

在这里插入图片描述

创建工程

在这里插入图片描述

在这里插入图片描述

导入spring boot相关的依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

编写主程序类

@SpringBootApplication
public class HelloWorldMainApplication {

    public static void main(String[] args) {

        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

编写相关的Controller

@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World!";
    }
}

运行测试

1.如何使用Spring Initailizr神器?

Spring Initailizr帮我们快速的创建出咱们的Spring Boot应用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.如何jar包部署SpringBoot项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.如何配置yaml语法提示?

在这里插入图片描述

在这里插入图片描述

1.如何查看依赖树

在这里插入图片描述
在这里插入图片描述

1.如何使用lombok

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@Getter:自动提供getter方法

@Setter:自动提供setter方法

@ToString:生成toString方法

@EqualsAndHashCode生成JavaBean的equals和hashCode这俩方法。

@Data :自动提供getter和setter、hashCode、equals、toString等方法

@Slf4j:自动在bean中提供log变量,其实用的是slf4j的日志功能。

@AllArgsConstructor:生成有参构造器

@NoArgsConstructor注解生成无参构造器的。

在这里插入图片描述
在这里插入图片描述

1.如何使用devtools开发者工具

devtools开发者工具的作用就是我们通常所说的热更新。只需要按下Ctrl + F9快捷键,我们的项目就能实时生效了

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

在这里插入图片描述

1.静态资源的访问

在这里插入图片描述
访问 : 当前项目根路径/ + 静态资源名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.欢迎页index.html的存放位置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.常用的注解

@ResponseBody

在这里插入图片描述

@RestController

在这里插入图片描述

SpringBootApplication

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@Configuration与@Bean

在这里插入图片描述
在这里插入图片描述

@Configuration(proxyBeanMethods = true)

在这里插入图片描述

@Configuration(proxyBeanMethods = true),我们知道配置类本身也是组件,从IDEA控制台打印出的结果中我们还能知道它并不是一个普通对象,而是一个被Spring CGLIB增强了的代理对象,我们获取到的配置类组件本身就是一个代理对象。当我们在外部通过该代理对象来调用其方法时,Spring Boot默认会检查容器中是否有该方法已经返回了的组件,若有则不会新创,而是直接拿;若没有则再来调用该方法创建一个新的,总之,Spring Boot总会检查方法返回的组件是否在容器中存在。当然了,这一切的前提是@Configuration注解里面的proxyBeanMethods属性的值为true(@Configuration(proxyBeanMethods = true)),即在配置类中的方法被代理的情况下(proxyBeanMethods翻译过来就是代理bean的方法嘛),我们才能看到上述这种现象。

在这里插入图片描述

@Component、@Controller、@Service、@Repository

  • 我们说了一下使用@Configuration注解结合@Bean注解来向容器中注册组件。
  • 我们还可以给类上标注一个@Component注解,以代表该类是一个组件;
  • 或者标注一个@Controller注解,以代表它是前端控制器组件;
  • 或者标注一个@Service注解,以代表它是service层组件;
  • 或者标注一个@Repository注解,代表它是Dao层组件

@Import

我们说了一下使用@Configuration注解结合@Bean注解来向容器中注册组件。接下来,介绍另外一种给容器中添加组件的方式,即使用@Import注解给容器中导入一个组件。

@Import注解应该写在哪儿呢?我们只要写在任何一个配置类或者组件里面都是可行的。注意,@Import注解要写在容器中的组件它所属类型的那个类上,这个类可以是配置类,也可以是其他注解(例如@Component、@Controller、@Service以及@Repository)标注的类,总之,只要是容器中组件所属类型的类都行。这里,我们不妨将其标注在MyConfig配置类上。

在这里插入图片描述

@Conditional

@Conditional满足Conditional指定的条件,则进行组件注入
在这里插入图片描述

@ImportResource

在这里插入图片描述
在这里插入图片描述

@ConfigurationProperties

在这里插入图片描述

@EnableConfigurationProperties

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@ConfigurationProperties的作用仅仅是配置绑定,你还需要用@Component注解或者@EnableConfigurationProperties注入容器

在这里插入图片描述

1.SpringBoot的请求处理?

1.Rest风格的请求

在这里插入图片描述
在这里插入图片描述

2.普通参数与基本注解

在这里插入图片描述

@PathVariable 在这里插入图片描述

@RequestHeader在这里插入图片描述
在这里插入图片描述

@RequestParam在这里插入图片描述

@CookieValue在这里插入图片描述
在这里插入图片描述

@RequestBody
在这里插入图片描述

RequestAttribute
在这里插入图片描述
在这里插入图片描述

3.矩阵变量

详情请见Day29_SpringBoot—请求处理、响应处理

4.复杂参数:

①Map、②Model(map、model里面的数据会被放在request的请求域 request.setAttribute)
③RedirectAttributes( 重定向携带数据)
④ServletResponse(response)

在这里插入图片描述
在这里插入图片描述

5.自定义参数

在这里插入图片描述
在这里插入图片描述

1.SpringBoot的响应处理?

在这里插入图片描述

1.响应json数据

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
当你引入web场景自动引入了json场景,所以你就不用配置json了,给前端自动返回json数据;

在这里插入图片描述

2.响应文件数据

在这里插入图片描述

2.内容协商功能

根据客户端接收能力不同,返回不同媒体类型的数据。浏览器说我能接收json数据,那么返回json数据;另一个客户端说我能接收xml数据,那么返回xml数据;还有一个客户端说我能接收所有类型的数据,那么就返回它优先想要的数据类型。

1.服务端得导入支持相关类型数据的jar包
服务端要返回xml数据那肯定得支持xml数据才能行。(json不用你导入,你引入web场景自动引入了json场景)

先引入xml依赖
 <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

2.测试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.开启浏览器协商
如果想让浏览器接收json数据,你发送的url可以是http://localhost:8080/test/person?format=json
如果想让浏览器接收xml数据,你发送的url可以是http://localhost:8080/test/person?format=xml

但是你还得在application.yaml里面添加开启基于请求参数的内容协商功能。

spring:
    contentnegotiation:
      favor-parameter: true  #开启请求参数内容协商模式

在这里插入图片描述

在这里插入图片描述

1.如何整合SpringBoot单元测试?

1.导入依赖

在这里插入图片描述
在这里插入图片描述

2.古今对比

在这里插入图片描述

3.单元测试
官方文档:JUnit5常用注解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.断言机制

简单断言
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数组断言: 通过 assertArrayEquals 方法来判断两个对象或原始类型的数组是否相等
在这里插入图片描述

组合断言: assertAll 方法接受多个 lambda 表达式提供的断言
在这里插入图片描述

异常断言: Assertions.assertThrows() 配合函数式编程就可以进行使用。断定一定会出现异常。
在这里插入图片描述

超时异常
在这里插入图片描述

快速失败在这里插入图片描述

5.前置条件

前置条件(assumptions【假设】)类似于断言,不同之处在于 不满足的断言会使得测试方法失败
而不满足的前置条件 只会使得测试方法的执行终止。前置条件可以看成是 测试方法执行的前提,当该前提不满足时,就没有继续执行的必要

在这里插入图片描述
在这里插入图片描述

6.测试报告

在这里插入图片描述
在这里插入图片描述

7.嵌套测试

在这里插入图片描述
在这里插入图片描述

8.参数化测试(重点)

参数化测试就可以把所有参数都拉进来挨个测试一遍

  • @ParameterizedTest代表当前测试的内容不是普通的测试,而是参数化测试
  • @ValueSource: 为参数化测试指定入参来源,支持八大基础类以及String类型,Class类型
  • @MethodSource:表示读取指定方法的返回值作为参数化测试入参(注意方法返回需要是一个流)
  • …太多了

总之吧,如果需要就从官方文档(参数化测试)里面学,如果不需要你学那么多也没有用

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlackTurn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值