springcloud
父项目的建立,创建一个maven工程,选择骨架 site,打包方式为pom。 子项目的创建,创建一个空的maven工程。
dependencyManagement: 用于父pom管理, 父工程规定版本号之后,如果子项目没有指定版本号,那么会沿用父项目的版本号。 <modules>----子项目的项目名。
约定>配置>编码:
微服务模块:1.建module。2.改pom。3.写YML。4.主启动。5.业务类。
1. 前端与后端的交互数据, 前端只需要规定的状态码, 所以后端需要将规定的状态码以及查询信息返回给前端。
1.--创建数据库对应的实体类, 再创建一个CommonResult的类 ,设置泛型为T。 Lombok注解都添加再两个类上。
CommonResult中自定义int code--状态码, String message --返回的消息 T data---返回的查询数据。
设置构造器:public CommonResult(Integer code,String message){this(code,message,null);}
Controller层需要将方法设定为CommonResult类型,判断查询结果返回对应的信息。
2.多模块调用: RestTemplate --多模块之间调用的对象。 eg:order模块调用payment模块。
1.重构工程:提取重复代码,创建一个新的子模块,将order与payment相同的代码以及pojo类提取到新模块的文件中。 导入新模块的maven坐标即可使用。
2.order模块,需要创建一个配置类配置RestTemplate。添加到组件中。
3.order类作为用户通过GetMapping调用paymetn模块的接口。 与接口的返回方法类型相同,CommonResult<T> 将接口使用的对应泛型写出来。
3.如果接口是post请求: order方法 return restTemplate.postForObject(PAYMENT_URL+"/payment/create",payment,CommonResult.class);----- 1.为接口全路径。2.请求数据。 3.返回数据类型反射。
4.如果接口时get请求: return restTemplate.getForObject(PAYMENT_URL+"/get/"+id,CommonResult.class); -----1.全路径。2.返回数据类型的反射。
3.eureka: 分为eureka注册中心-server 和 eureka端口--client。
1.创建一个moudle,在pom中导入spring-cloud-starter-netflix-eureka-server坐标 --为注册中心。 在yml文件中配置eureka --
eureka:
instance:
hostname: localhost #eureka服务端实例名称
client:
registry-with-eureka: true #false表示不向注册中心注册eureka自己
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务器实例,并不需要检索服务。
service-url:
#设置与eureka server交互的地址,查询服务和注册服务都需要依赖这个地址。
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
2.在该moudle中创建一个主类。添加@SpringBootApplication,@EnableEurekaServer //-- Eureka 服务注册中心注解. 此时启动该注册中心模块之后,打开对应的地址,就能进入eureka页面。
3.其他模块注册到eureka模块中。(payment8001,order8002),待注册的模块需要导入spring-cloud-starter-netflix-eureka-client的坐标。 yml配置eureka
eureka:
client:
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka #注册的服务中心地址
register-with-eureka: true # true-- 表示将该服务注册进服务中心
在待注册的模块的主类上添加@EnableEurekaClient。 启动服务即可, 在eureka界面中会显示该注册模块的信息。
【注意】:eureka注册的application名为待注册模块的spring-apllication -name的值。

浙公网安备 33010602011771号