首先选取正确的springboot 和springcloud 版本 否则可能会出现不兼容的现象
下面是将以来进行版本管理 其他模块调用时不用再写版本号
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2021.0.1.0
pom
import
1.使用nacos作为服务注册中心
1.1导入nacos依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
1.2 下载并执行 nacos-server.cmd 文件
打开loalhost:8848/nacos 账号nacos 密码nacos 登陆成功进入nacos的管理页面
spring:
datasource:
username: root
password: root
url: jdbc:mysql://*****:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8
driver-class-name: com.mysql.cj.jdbc.Driver
cloud:
nacos:
discovery:
server-addr: localhost:8848 //nacos暴露的地址
application:
name: qiuqiumall-coupon //服务在nacos中暴露的名称
1.4 主启动类添加注解
@EnableDiscoveryClient //将服务注册到注册中心nacos
@SpringBootApplication
public class QiuqiumallCouponApplication {
public static void main(String[] args) {
SpringApplication.run(QiuqiumallCouponApplication.class, args);
}
}
2.OpenFeign 的应用
2.1 引入依赖
org.springframework.cloud
spring-cloud-starter-openfeign
2.2 编写要调用功能的接口
@FeignClient("qiuqiumall-coupon") //要远程调用的服务在nacos中注册的名称
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list") //被调用微服务功能的url
public R membercoupons();
}
2.3 在自己的controller中自动注入写好的接口
@Autowired
CouponFeignService couponFeignService;
@RequestMapping("/coupons")
public R test()
{
MemberEntity memberEntity = new MemberEntity();
memberEntity.setNickname("张三");
R membercoupons = couponFeignService.membercoupons();
return R.ok().put("member",memberEntity).put("coupon",membercoupons.get("coupon"));
}
2.4 主启动类添加注解
@EnableFeignClients("com.qhz.qiuqiumall.member.feign") //开启远程调用 调用接口的位置
@SpringBootApplication
@EnableDiscoveryClient //将服务注册进nacos 因为Open-Feign 是基于nacos 发送http请求将数据转换为Jason进行远程调用
public class QiuqiumallMemberApplication {
public static void main(String[] args) {
SpringApplication.run(QiuqiumallMemberApplication.class, args);
}
}
3.如何使用Nacos作为配置中心统一管理
3.1.1 引入依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.cloud
spring-cloud-starter-bootstrap
3.1.1
3.1.2创建一个bootstrap.properties
spring.application.name=qiuqiumall-coupon
spring.cloud.nacos.config.server-addr=localhost:8848
(Data Id)gumall-coupon.properties。 默认规则,应用名.properties
3.1.4给应用名.properties添加任何配置 3.1.5.动态获取配置@RefreshScope
@RestController
@RequestMapping("/coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private Integer age;
@RequestMapping("/test")
public R test()
{
return R.ok().put("name",name).put("age",age);
}
@RequestMapping("/member/list")
@RefreshScope 动态获取并刷新配置信息
@Value("${配置项的名}") 获取配置信息中的值
如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的内容
3.2细节
3.2.1命名空间:配置隔离;
默认:public(保留空间);默认新增的所有配置都在public空间.
1.开发,测试,生产:利用命名空间来做环境隔离。
注意: 在bootstrap.properties;配置上哪个命名空间下的配置,
spring.cloud.nacos.config.namespace=e62ca179-977e-401d-ba21-9f946cc76f96
2.每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间只加载自己命名空间下的配置
3.2.2配置集所有的配置的集合
3.2.3配置集IDData ID:类似文件名.
3.2.4配置分组默认所有的配置集都属于:DEFAULT_GROUP;
1111,618,1212
每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,,prod
3.2.5 同时加载多个配置集微服务任何配置信息,任何配置文件都可以放在配置中心中
只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可
@Vaule ,@ConfiguationProperties...
以前的springboot任何从配置文件中获取值都能使用
配置中心有的优先使用配置中心的。
4.gateway网关使用 4.1导入依赖
org.springframework.cloud
spring-cloud-starter-gateway
3.1.1
4.2 修改配置文件将服务注册进nacos
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.application.name=qiuqiumall-gateway
server.port=88
4.3 修改gateway相关配置信息
spring:
cloud:
gateway:
routes:
- id: test_route //路由名称
uri: https://www.baidu.com //路由地址
predicates:
- Query=url,baidu //断言 如果路径存在?url=baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq
4.4主启动类
@EnableDiscoveryClient //将服务注册到nacos
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) //因为有数据库依赖但又不需要配置数据库 排除数据源自动配置
public class QiuqiumallGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(QiuqiumallGatewayApplication.class, args);
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)