注册中心
1.引入依赖和
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.在properties文件中配置服务地址和应用名称
Spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: gulimall-coupon
3.在主程序中加入注解
@EnableDiscoveryClient
远程调用
4.引入依赖openfeign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
5.在对应项目gulimall-coupon中编写好方法
@RequestMapping("/member/list")
public R meberCoupons(){
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("满300减50");
return R.ok().put("conpons",Arrays.asList(couponEntity));
}
6.编写接口,告诉SpringCloud这个接口需要调用远程服务
1)声明接口的每一个方法都是调用哪个远程服务的哪个请求。在gulimall-member项目中编写接口,新建文件CouponFeignService,如:
@FeignClient("gulimall-coupon")
public interface CouponFeginService {
@RequestMapping("/coupon/coupon/member/list")
public R meberCoupons();
}
7.在gulimall-member调用另外一个项目中的方法
//将之前编写好的接口注入进来
@Autowired
CouponFeignService couponFeignService;
@RequestMapping("/coupons")
public R test(){
MemberEntity memberEntity=new MemberEntity();
memberEntity.setNickname("rider");
R meberCoupons = couponFeginService.meberCoupons();
return R.ok().put("coupons",meberCoupons.get("conpons")).put("member",memberEntity);
}
8.开启远程调用功能,在主项目中添加注解@EnableFeignClients(basePackages = "com.rider.gulimall.member.feign")
@EnableFeignClients(basePackages = "com.rider.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
@MapperScan("com.rider.gulimall.member.dao")
public class GulimallMemberApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallMemberApplication.class, args);
}
}
配置中心使用
9.引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
10.新建并在boostrap.properties中配置
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
11.在配置中心添加数据集(Data Id)默认规则为应用名+properties,例如gulimall-coupon.priperties
12.在controller中加入注解@RefreshScope动态获取并刷新配置,@Value("${配置项的名字}")获取properties中的配置,项目和配置中心有相同的配置项,优先使用配置中心的文件
Tips:注意:项目加载时会优先使用配置中心的文件
nacos细节
13.命名空间:配置隔离。默认public配置空间,新增默认添加到public中。用来隔离开发、生产和测试等,
在bootstrap.properties中配置命名空间做配置隔离。namespace为他的UUID.
spring.cloud.nacos.config.namespace=5e252a0a-fc3d-447f-8964-933ab1f9d181
14.配置集和配置id:配置集是指所有配置的集合,配置id就是Data Id
15.配置分组:默认所有的配置集都属于配置分组DEFAULT_GROUP
spring.cloud.nacos.config.group=DEFAULT_GROUP
16.项目规定:使用命名空间做每个微服务,用配置分组区分开发环境
17.利用配置中心。任何配置文件,任何配置信息,都可放在配置中心中。只要说明在配置中心加载那些值就好
spring.cloud.nacos.config.namespace=412a07e7-73d1-4169-9b58-68c7a743f3a9
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true
spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
配置中心有的优先使用配置中心的文件