前言
用的springboot及springcloud版本都是当前官网最新,版本对应关系可官网查看
- 所讲代码仓库地址:https://gitee.com/raoyuuuu/springcloud-demo
需要的服务
- 父工程-parent,管理依赖
- 子项目-注册中心eureka
- 子项目-服务提供者provider
- 子项目-服务消费者consumer
期望
- provider工程实现查询
- 实现feign:consumer通过feign调用provider方法,实现查询
- 实现gateway:consumer通过网关调用provider方法,实现查询
实现
1.1 、创建空文件springcloud-demo
1.2、创建父工程
parent工程的意义:在服务越来越多的情况下,起到统一依赖版本的作用,不用每个服务都去改
具体看—> maven项目pom.xml中parent标签的使用
创建一个普通的maven项目即可
pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>cloud-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud-parent</name>
<description>Demo project for Spring Boot</description>
<!--打包方式-->
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- springcloud的依赖 注意和spring-boot-starter-parent的版本关系,2020.0.X对应2.5.X,其他版本关系可在官网查-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--类似一个中间件,链接Spring Boot和MyBatis,构建基于Spring Boot的MyBatis应用程序-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- 数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.5</version>
</dependency>
<!-- junit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
<!-- 日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.6</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
1.3、创建provider工程
1.3.1、创建springboot项目
1.3.2、pom依赖:这边有些依赖就可以引用父工程中的依赖了
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--父依赖-->
<parent>
<groupId>com.example</groupId>
<artifactId>cloud-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>cloud-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud-provider</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</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-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1.3.3、application配置:配置数据库等
server:
port: 8001
mybatis:
type-aliases-package: com.example.entity
mapper-locations: classpath:mapper/*.xml
configuration:
# 开启驼峰
map-underscore-to-camel-case: true
spring:
application:
name: cloud-provider
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/feather?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
数据库
CREATE TABLE `dept` (
`deptno` bigint NOT NULL AUTO_INCREMENT,
`dname` varchar(32) DEFAULT NULL,
`db_source` varchar(32) DEFAULT NULL,
PRIMARY KEY (`deptno`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3;
1.3.4、实体类Dept
@Data
public class Dept implements Serializable {
private Integer deptno;
private String dname;
private String db_source;
}
1.3.5、DeptMapper
@Mapper
public interface DeptMapper {
List<Dept> list();
}
1.3.6、DeptMapper.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.mapper.DeptMapper">
<select id="queryByNo" resultType="com.example.entity.Dept">
select * from dept where deptno = #{no}
</select>
<select id="list" resultType="com.example.entity.Dept">
select * from dept
</select>
</mapper>
1.3.7、DeptService
public interface DeptService {
List<Dept> list();
}
1.3.8、DeptServiceImpl
@Service
public class DeptServiceImpl implements DeptService {
@Autowired
private DeptMapper deptMapper;
@Override
public List<Dept> list() {
return deptMapper.list();
}
}
1.3.9、DeptController
@RestController
@RequestMapping("dept")
public class DeptController {
@Autowired
private DeptService deptService;
@GetMapping("list")
public List<Dept> list(){
return deptService.list();
}
}
1.3.10、CloudProviderApplication
@SpringBootApplication
public class CloudProviderApplication {
public static void main(String[] args) {
SpringApplication.run(CloudProviderApplication.class, args);
}
}
启动项目
调用接口 http://localhost:8001/dept/list
到目前为止,provider就实现了,接下来实现eureka