目录
3、我的8001端口的业务逻辑模块的application文件
7、启动我们的7001端口的服务注册中心,启动我们的8001端口的 业务逻辑模块,访问服务注册中心的前端界面
我的上一篇博客:
初学SpringCloud:将我们每一个微服务模块中都会用到的一些实体类的代码抽取出来,组成一个微服务,然后install一下。其他的微服务模块可以写依赖调用,减少代码冗余。
1、背景介绍
我的这个专栏的博客,记录的是我初学SpringCloud所做的一个简单的练习项目。目前我已经完成了服务注册中心的模块的构建,使用7001的端口;完成了把全部微服务模块的共有的实体类提取出来组成的一个模块的构建;完成了后端业务逻辑的Controller-》Service-》Dao的代码,并且完成了MyBatis框架下的mapper.xml文件,使用8001端口。
2、本篇博客的目的
本篇博客,我要完成8001端口的模块的apinstancepplication文件和POM文件,使得8001端口的模块能够注册进7001端口的Eureka服务注册中心,并且配置一下Mysql数据库的连接属性。
3、我的8001端口的业务逻辑模块的application文件
代码如下:
server:
port: 8001
spring:
application:
name: cloud-payment-service
#上面这个是微服务的名字,是不能随便改变的,尽量不要随便改变。作为EurekaClient是需要到EurekaServer去注册的
#注册的时候,就是要用到这个名字的
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong
username: root
password: 123456
mybatis:
mapperLocations: classpath:mapper/*.xml
type-aliases-package: com.springcloud.entities
eureka:
client:
register-with-eureka: true #这个就表示是否默认注册到EurekaServer,当然就是true啦
fetch-registry: true #这个表示是否从EurekaServer抓取已有的注册信息,默认是true。
#其实上面的这个属性单节点是无所谓的,但是集群就必须设置为true,这样才能配合ribbon使用负载均衡
service-url:
defaultZone: http://eureka7001.com:7001/eureka
#http://eureka7002.com:7002/eureka http://eureka7001.com:7001/eureka
instance:
instance-id: payment8001
prefer-ip-address: true
# lease-renewal-interval-in-seconds: 1 #客户端向服务器发送心跳的时间间隔
# lease-expiration-duration-in-seconds: 2 #EurekaServer在收到最后一次心跳后等待时间上线,单位是秒,超时将会剔除服务
# service-url:
# defaultzone: http://localhost:7001/eureka
# service-url:
# defaultZone: http://localhost:7001/eureka
第一个首先要做的就是设置端口号,我按照约定,设置为了 8001
往下,我设置了spring.application.name 这个属性的值是这个服务在Euraka服务注册中心上面显示的名字。就像是一家公司的公司名一样,在管理写字楼的物业公司的花名册上面登记的名字一样。
再往下是设置spring.datasource 设置了type,使用了alibaba的druid。DRUID是阿里巴巴开源平台上一个数据库连接池实现。就是功能还是比较强大的,具体的我也不清楚很多了。接下来就是设置driver,url,name,password。
接着往下,设置了mybatis连接数据库的mapper.xml 其实mapperLocations这个属性是不需要配置的,因为很多人编码的过程中,都是将mapper文件夹跟Controller,Service,Dao文件夹放在同一个文件下的。但是我目前将mapper文件夹放在了resources下面,因此,为了保证Spring能够扫描到mapper文件并且顺利加载,需要显示的配置一下路径。mapper.xml文件也是和Dao层接口相关联的。 下面还设置了一个type-aliases-package,这个属性的值是我们的实体类所在的包名的右键点击以后的 Copy Reference的结果。设置它是因为我们在mapper.xml文件中需要关联实体类和Dao层的方法名,但是实体类需要写全,也就是需要带上路径。我们为了省略路径,就需要在applicaiton文件中设置这个属性的值为实体类所在的包的 Copy Reference。我觉的可以参考下面的这篇博客:
https://blog.csdn.net/weixin_39389888/article/details/95613518
再接着往下,就是设置eureka.client 它的注册到eureka和抓取注册表,肯定都是true,然后再设置service-url的defaultZone,这个属性表示要注册到的Eureka服务注册中心的地址,eureka7001.com:7001 是服务注册中心的eureka.instance.hostname,这个是自己编码的时候,在EurekaServer模块设置好的(服务注册中心的实例名称)+服务注册中心设置的端口号。多说一句,我们后期要配置Server集群的时候,这个属性的值可以是多个,使用逗号隔开就可以啦。
再往下,就是设置 eureka.instance 它的instance-id属性的值,是有默认的值的,但是在这里我们更改一下,更方便我们看到。instance-id跟spring.applicatin.name的意义有一点类似,一个是名字,一个是id。这两个属性的值,最后都是可以在EurekaServer的前端浏览器界面看到的。我觉得下面这篇博客讲得很好:
https://blog.csdn.net/qq_27680317/article/details/79181236
再往下,最后一个就是 prefer-ip-address 关于这个属性,我看了几篇博客,我感觉将的优点深奥,我本人掌握的知识有限,目前还不能理解 我能确定的就只是,将ip注册进Eureka,至于是哪个ip,我还不是很理解。
4、我的8001端口的业务逻辑模块的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2023</artifactId>
<groupId>com.lanse.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-provider-payment8001</artifactId>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--下面的这个依赖是引入了自己的那个模块新建成的jar包,就是把通用的entities提出来了-->
<dependency>
<groupId>com.lanse.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--加了下面这个依赖以后,application文件就可以正常识别了-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</project>
POM文件,我原先的博客上解析过了,在这里我就简单的介绍一下:
我直接就从<dependencies></dependencies>开始介绍,一些常用的,比如说热部署的或者说是测试的,web-starter的,我就不多说了。
<dependency>
<groupId>com.lanse.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
上面这个依赖是我们的公共模块的依赖,我们的公共模块创建好以后,执行Maven的install命令,生成jar包,然后使用这个依赖就可以直接引用公共模块里面的实体类。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
上面的这个依赖是因为我们在application文件中使用了spring.datasource.type=com.alibaba.druid.pool.DruidDataSource 所以需要加上这个依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
上面这个依赖是必须的,因为我们使用Eureka作为我们的服务注册中心,那么我们现在的8001端口的业务逻辑模块,就需要像是一家公司入驻到写字楼的物业公司一样,我们的这个模块是EurekaClient,因此必须加上这个依赖
5、我的8001端口的业务逻辑模块的主启动类
package com.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PaymentMain8001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8001.class,args);
}
}
上面的代码就是我们的这个模块的主启动类,作为EurekaClient,是必须加上@EnableEurekaClient注解的。
6、总览一下我的8001端口的业务逻辑模块的总体架构
7、启动我们的7001端口的服务注册中心,启动我们的8001端口的 业务逻辑模块,访问服务注册中心的前端界面
可以明显的看到,我们在application中设置的 name属性的值和perfer-ip-address属性的值在这里出现了。这证明已经注册进来了。
我的下一篇博客:
初学SpringCloud:建立使用90端口的微服务模块,注册到服务注册中心,使得这个模块的方法调用8001端口的业务逻辑模块的方法