创建一个SpringCloud项目

news2024/12/26 2:14:01

文章目录

    • 1.首先在**SpringCloud官网**中查看依赖版本号
    • 2.创建主Maven项目:
      • 在pom文件中引入依赖
    • 3.再在这个Maven项目中创建子模块(子模块也是Maven)
      • (1)创建一个数据库db01和表dept
      • (2)创建实体类dept(注意:**每个实体类都要进行序列化**【实现Serializable接口】)
      • (3)创建服务提供者:
      • (4)创建服务消费者:
      • (5)创建eureka服务注册中心
      • (6)对服务提供者进行Eureka配置
        • 自我保护机制:
      • (7)建立Eureka集群

SpringCloud官网
SpringCloud中文文档
Maven依赖仓库

1.首先在SpringCloud官网中查看依赖版本号

查看对应的SpringBoot版本号。
(SpringCloud依赖于SpringBoot,所以一个SpringCloud项目必须引入SpringBoot)
在这里插入图片描述
在这里插入图片描述

2.创建主Maven项目:

在pom文件中引入依赖

  <!-- 统一管理jar包版本 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.16.18</lombok.version>
    <mysql.version>5.1.47</mysql.version>
    <druid.version>1.1.16</druid.version>
    <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
  </properties>
  <!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version  -->
  <dependencyManagement>
    <dependencies>
      <!--spring boot 2.3.2-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.2.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--spring cloud Hoxton.SR1-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR11</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--spring cloud alibaba 2.1.0.RELEASE-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.1.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
      </dependency>
      <!--SpringBoot启动器-->
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
        <optional>true</optional>
      </dependency>
    </dependencies>
  </dependencyManagement>

3.再在这个Maven项目中创建子模块(子模块也是Maven)

三个子模块:
在这里插入图片描述

(1)创建一个数据库db01和表dept

在这里插入图片描述

(2)创建实体类dept(注意:每个实体类都要进行序列化【实现Serializable接口】)

在这里插入图片描述

什么是链式写法:

//正常情况下:
Dept dept=new Dept();
dept.setDeptno(1);
dept.setDeptname("11");
//链式写法:
dept.setDeptno(1).setDeptname("11");

Dept类

@Data
@NoArgsConstructor
@Accessors(chain = true) //链式写法
public class Dept implements Serializable {
    /**
     * 主键
     */
    private Long deptno;
    private String deptname;

    /**
     * 这个数据存在哪个数据库的字段中
     * 微服务 一个服务对应一个数据库
     * 同一个信息可能存在不同的数据库中
     */
    private String db_source;

    public Dept(String deptname) {
        this.deptname = deptname;
    }

}

pom文件:

    <artifactId>springcloud-api</artifactId>
    <!--当前的module自己需要的依赖,如果父依赖中已经配置了,则不需要再写了-->
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

(3)创建服务提供者:

在这里插入图片描述
pom文件:

    <dependencies>
        <!--需要拿到实体类,所以要配置api module-->
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--jetty-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <!--热部署工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

application.yml配置文件:

server:
  port: 8001
mybatis:
  type-aliases-package: com.springcloud.pojo
  mapper-locations: classpath:mybatis/mapper/*.xml
  config-location: classpath:mybatis/mybatis-config.xml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--<settings>-->
    <!--<setting name="cacheEnabled" value="true"/>-->
    <!--</settings>-->
</configuration>

DeptMapper.xml

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.springcloud.dao.DeptDao">
    <insert id="addDept"  parameterType="Dept">
        insert into dept (deptname,db_source)
        values (#{deptname},DATABASE())
    </insert>

    <select id="findById" resultType="Dept" parameterType="Long">
        select * from dept where deptno=#{id};
    </select>

    <select id="findAll" resultType="Dept" >
        select * from dept;
    </select>

</mapper>

DeptController

@RestController
public class DeptController {
    @Autowired
    private DeptService deptService;

    @PostMapping("/dept/add")
    public boolean addDept(Dept dept){
        return deptService.addDept(dept);
    }

    @GetMapping("/dept/get/{id}")
    public Dept get(@PathVariable("id") Long id){
        return deptService.findById(id);
    }
    @GetMapping("/dept/list")
    public List<Dept> getAll(){
        return deptService.findAll();
    }
}

dao、service省略…

启动类:

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

(4)创建服务消费者:

消费者没有service层
在这里插入图片描述
pom文件:

    <!--实体类外部-->
    <dependencies>
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

DeptConsumerController:

@RestController
public class DeptConsumerController {
    //消费者 没有Service层
    //RestTemplate....供我们直接调用 注册到Spring中
    // url,实体:Map,Class<T> responseType
    @Autowired
    private RestTemplate restTemplate;//提供多种便携访问远程http服务的方法,简单的Restful服务模板

    private static final String REST_URL_PREFIX="http://localhost:8001";

    @RequestMapping("/consumer/dept/get/{id}")
    public Dept get(@PathVariable("id") Long id){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id,Dept.class);

    }
    @RequestMapping("/consumer/dept/add")
    public boolean add(Dept dept){
        return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add",dept,Boolean.class);

    }
    @RequestMapping("/consumer/dept/list")
    public List<Dept> findAll(){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list",List.class);
    }


}

ConfigBean:

@Configuration
public class ConfigBean {
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

}

启动类:

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

application.yml文件:

server:
  port: 80

(5)创建eureka服务注册中心

Eureka:
Eureka是Netflix的一个子模块,Eureka是基于Rest的服务,它是一个注册中心(让服务在启动时注册进去)
在这里插入图片描述
Eureka是C-S模式(Client-Server)
它有两个组件,一个是Eureka Client,一个是Eureka Server
Eureka Server:提供服务发现的能力,各个微服务启动时,会通过Eureka Client向Eureka Server进行注册自己的信息(例如网络信息),Eureka Server会存储该服务的信息。
Eureka Client:是一个Java客户端,用于简化与Eureka Server的交互。
微服务启动后,会周期性地向Eureka Server发送心跳(默认周期为30秒)以续约自己的信息。如果Eureka Server在一定时间内没有接收到某个微服务节点的心跳,Eureka Server将会注销该微服务节点(默认90秒)

在这里插入图片描述
pom文件:

    <artifactId>springcloud-eureka-7001</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

application.yml配置类

server:
  port: 7001
eureka:
  instance:
    hostname: localhost  #Eureka服务端的实例名称
  client:
    register-with-eureka: false #表示是否向eureka注册中心注册自己
    fetch-registry: false #false表示自己为注册中心
    service-url:  #监控页面
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

启动类:

@SpringBootApplication
@EnableEurekaServer //服务端的启动类
public class EurekaServer_7001 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer_7001.class,args);
    }
}

注意:
SpringBoot、SpringCloud、eureka的版本号要对应
我使用的版本号分别是
SpringBoot:

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.2.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

SpringCloud:

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR11</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

Eureka:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>

然后浏览器访问 http://localhost:7001/ 会显示:
在这里插入图片描述

(6)对服务提供者进行Eureka配置

在springcloud-provider-dept-8001模块中:

在pom文件中导入eureka依赖:

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

修改application.yml配置文件

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: springcloud-provider-dept
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/
  instance:
    instance-id: springcloud-provider-dept-8001 #修改eureka上默认描述信息

在启动类上添加注解@EnableEurekaClient

@SpringBootApplication
@EnableEurekaClient //在服务器启动后自动注册到eureka中
public class DeptProvide_8001 {
    public static void main(String[] args) {
        SpringApplication.run(DeptProvide_8001.class,args);
    }
}

先启动EurekaServer,也就是eureka-7001模块
再启动EurekaClient,也就是springcloud-provider-dept-8001模块
然后访问http://localhost:7001/
在这里插入图片描述

过一段时间会出现警告:
在这里插入图片描述
这是Eureka的自我保护机制。

自我保护机制:

某时刻某个微服务不可用了,Eureka不会立刻清理,依旧会对微服务的信息进行保存。
默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制
Eureka Server自动进入自我保护机制,此时会出现以下几种情况:

1、Eureka Server不再从注册列表中移除因为长时间没收到心跳而应该过期的服务。
2、Eureka Server仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上,保证当前节点依然可用。
3、当网络稳定时,当前Eureka Server新的注册信息会被同步到其它节点中。
关闭自我保护机制:
在application.yml配置文件中:
可以关闭自我保护机制,但是不推荐关闭

  server:
    enable-self-preservation: false #关闭自我保护机制(不推荐关闭)

监控信息的完善:
在这里插入图片描述
在springcloud-provider-dept-8001模块pom文件中导入依赖:

        <!--完善监控信息-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

在application.yml文件中进行配置:

info:
  app.name: zsy-springcloud
  company.name: blog.zzz.com

跳转结果:
在这里插入图片描述

获取注册微服务的一些信息:
在springcloud-provider-dept-8001模块中:

DeptController:

    //获取一些配置的信息,得到具体的微服务
    @Autowired
    private DiscoveryClient discoveryClient;
    //注册进来的微服务 获取一些消息
    @GetMapping(value = "/dept/discovery")
    public Object discovery(){
//        获取微服务列表的清单
        List<String> service=discoveryClient.getServices();
        System.out.println("discovery=>services:"+service);
//        得到一个具体的微服务信息
        List<ServiceInstance> instances=discoveryClient.getInstances("SPRINGCLOUD-PROVIDER-DEPT");
        for(ServiceInstance instance:instances){
            System.out.println(
                    instance.getHost()+"\t"+
                            instance.getPort()+"\t"+
                            instance.getUri()+"\t"+
                            instance.getServiceId()
            );
        }
        return this.discoveryClient;
    }

访问这个接口:
在这里插入图片描述

(7)建立Eureka集群

在这里插入图片描述
这三个模块的各种配置都相同(pom文件、application.yml、启动类)
在这里插入图片描述
修改hosts文件:
在这里插入图片描述

在这里插入图片描述
修改application.yml文件:
7001:

 defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

在这里插入图片描述
7002:

在这里插入图片描述
7003:
在这里插入图片描述
同时启动7001,7002,7003
这样就相当于建立了一个Eureka集群
作用:例如7001崩了,可以使用7002/7003

修改服务提供者application.yml文件

defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

导包问题解决--ImportError: DLL load failed while importing _path: 找不到指定的模块

一、问题反馈 在运行某个Python程序时&#xff0c;需要导入numpy和matplotlib包如下&#xff1a; import numpy as np import matplotlib.pyplot as plt运行程序时会报错“ImportError: DLL load failed while importing _path: 找不到指定的模块”&#xff1a; 二、问题解决…

信号发生器的电路构成及工作原理

一、信号发生器的电路构成 信号发生器的电路组成有多种形式&#xff0c;一般包括以下几个环节: 基本波形产生电路:波形产生可以由RC振荡器、文丘里电桥振荡器或压控振荡器产生。 波形转换电路:基本波形由正弦波、方波、三角波经过矩形波整形电路、正弦波整形电路、三角波整形电…

经众多Nature文章使用认证!艾美捷抗酒石酸酸性磷酸酶TRAP染色试剂盒

抗酒石酸酸性磷酸酶&#xff08;TRAP&#xff0c;tartrate-resistant acid phosphatase&#xff09;为破骨细胞的标志酶&#xff0c;特异地分布于破骨细胞中&#xff0c;为破骨细胞所特有。通常作为鉴别破骨细胞的重要标志物&#xff0c;使破骨细胞呈红色。Kamiya艾美捷抗酒石酸…

Java单表实现评论回复功能

Java单表实现评论回复功能1.简介2.功能实现图3.数据库设计4.实体类5.实现思路6.功能实现6.1 Sql入手6.2 业务实现7.前端实现8.最终成果1.简介 最近在写毕业设计的时候发现需要实现一个评论功能&#xff0c;然后看了一下掘金和csdn的评论区&#xff0c;如何实现评论功能&#xf…

【已解决】nginx x-cache: MISS

nginx x-cache: MISS 今天在使用nginx的时候发生了巨无语的一件事&#xff0c;明明我已经配置了代理缓存proxy_cache&#xff0c;但是一直未生效&#xff0c;于是我不断进行排错、nginx -s reload&#xff0c;问题始终没有解决。后来我尝试在另一台服务器上使用相同的配置&…

Docker的数据管理(数据卷、容器互联)

Docker的数据管理Docker的数据管理&#xff08;数据卷、容器互联&#xff09;一、数据卷&#xff08;容器与宿主机之间数据共享&#xff09;创建数据卷容器写入数据宿主机写入数据容器只有读的权限二、数据卷容器&#xff08;容器与容器之间数据共享&#xff09;创建两个数据卷…

yocs_velocity_smoother速度平滑库知识

一.C &#xff08;1&#xff09;nth_element()用法 头文件&#xff1a;#include<algorithm> nth_element:在数组或容器中将第几大或小的元素放到该放的位置上。&#xff08;默认第几小&#xff0c;可以用cmp自定义为第几大&#xff09; 如&#xff1a;nth_element(a,…

一篇文章搞懂:词法作用域、动态作用域、回调函数及闭包

前言 把以前一直只限于知道&#xff0c;却不清晰理解的这几个概念完完整整地梳理了一番。内容参考自wiki页面&#xff0c;然后加上自己一些理解。 词法作用域和动态作用域 不管什么语言&#xff0c;我们总要学习作用域(或生命周期)的概念&#xff0c;比如常见的称呼&#xf…

Flutter ーー logger 组件记录日志

Flutter ーー logger 组件记录日志 原文 https://medium.com/simbu/flutter-logging-with-logger-6227308ca199 前言 是时候添加一些日志记录了&#xff0c;我希望能够检查发生的网络请求和关键操作&#xff0c;在应用程序和后端之间的交互变得越来越复杂的情况下&#xff0c;给…

vue2自定义指令及钩子函数

目录​​​​​​​ 一、自定义指令的生命周期 二、局部自定义指令 三、全局自定义指令 1.定义自定义指令 2. index.js install方法安装自定义指令 3. main.js 全局挂载自定义指令 4.使用全局自定义指令 一、自定义指令的生命周期 在Vue中&#xff0c;自定义指令的生命…

晶振不仅仅是可以振荡就够了

晶振相当于人的心脏&#xff0c;能跳动&#xff0c;整个系统才是“活的”。晶振常见有有源晶振、无源晶振。有源晶振比较贵&#xff0c;但是需要外围电路少&#xff0c;供个电就能工作。无源晶振价格便宜&#xff0c;匹配电路复杂些。以无源晶振进行分析&#xff0c;以下是无源…

华为IdeaHub与华为云会议:软硬结合,天生一对

伴随数字化进程&#xff0c;传统视频会议终端存在着配置成本高昂、操作繁琐、组网复杂、需专业维护等问题&#xff0c;已无法满足企业数字化转型的需求&#xff0c;而会议软件使用便捷&#xff0c;但仍存在着与设备兼容性差、画面清晰度低、稳定性及信息安全等问题。面对市场上…

【疑难攻关】——文件包含漏洞

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门 创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座…

线性回归实现原理

一.定义 回归是监督学习的一个重要问题&#xff0c;回归用于预测输入变量和输出变量之间的关系&#xff0c;特别是当输入变量的值发生变化时&#xff0c;输出变量的值也随之发生变化。回归模型正是表示从输入变量到输出变量之间映射的函数 回归的目的是预测数组型的目标值。 …

并查集的学习

并查集是一种树型的数据结构&#xff0c;并查集可以高效地进行如下操作&#xff1a; 1、查询元素p和元素q是否属于同一组 2、合并元素p和元素q所在地组 并查集结构&#xff1a; 是一种树型结构&#xff0c;这棵树地要求比较简单 1、每个元素都唯一对应一个节点 2、每一组数…

iOS打包错误The operation couldn’t be completed. (AppThinning.StubError error 1.)

1、iOS打包错误 iOS打包报错&#xff1a;The operation couldn’t be completed. (AppThinning.StubError error 1.) 操作流程&#xff1a;archive之后选择Distribute App&#xff0c;在如上图步骤选择 Ad Hoc&#xff0c;然后出现The operation couldn’t be completed. (Ap…

GCC - 基于win10平台搭建Cmake + MinGW + gcc-arm-none 开源开发环境

前言 基于GUN开源工具链&#xff0c;搭建Windows平台下ARM编译运行环境&#xff01; &#x1f431;‍&#x1f680; 文中涉及的开发工具包已打包上传&#xff0c;可点击此处下载。 文章速览前言一、安装git-bash二、安装 MinGW-w6432位下载地址:  [MinGW - Minimalist GNU …

鉴源论坛 · 观模丨基于搜索的测试生成

作者 | 孙海英 华东师范大学软件工程学院讲师 苏亭 华东师范大学软件工程学院教授 版块 | 鉴源论坛 观模 测试用例自动生成&#xff0c;简称测试生成&#xff08;Test Generation&#xff09;&#xff0c;是指针对给定的被测对象&#xff0c;例如代码单元、接口、系统等&…

[附源码]Python计算机毕业设计Django防疫物资捐赠

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

Spring MVC 中的分页 RESTful API 响应

分页允许您将来自Spring MVC的大型RESTful API响应拆分为称为页面的较小块。在这篇文章中&#xff0c;让我们看看如何使用Spring MVC和Spring JPA对来自Spring boot应用程序的JSON响应进行分页。 Spring MVC 中的分页和排序 如前所述&#xff0c;我们可以使用spring 数据 JPA…