一.远程调用的别的服务步骤
1.引入open-feign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 2.编写一个接口告诉SpringCloud这个接口需要调用远程服务
声明每一个方法都是调用那个远程接口的那个方法
@Service
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("coupon/coupon/member/list")
public R membercoupons();
}
- 开启远程调用功能:@EnableFeignClients
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
@SpringBootApplication
@EnableDiscoveryClient
public class GulimallMemberApplication {
public static void main(String[] args) { SpringApplication.run(GulimallMemberApplication.class, args);
}
}
二.如何使用Nacos作为配置中心,统一管理配置
- 引入依赖
<!--配置中心来做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 创建bootstrap.properties
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
- 默认添加一个数据集(Data ID)gulimall-coupon.properties默认规则应用名.properties
- 在配置中心添加应用名.properties配置
在本地添加配置application.properties
coupon.user.name=zhangsan
coupon.user.age=17
- 动态获取配置
/**@RefreshScope:动态刷新配置获取配置
@Value("${配置项的名称}"):获取配置的值
如果配置中心和当前应用都配置了相同的项优先使用配置中心的配置
**/
@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private String age;
@RequestMapping("/test")
public R test(){
return R.ok().put("name",name).put("age",age);
}
}
二.Nacos作为配置中心细节
- 命名空间:配置隔离
默认为public,默认新增的配置都在public下
开发、测试、生产;利用命名空间做环境隔离
注意:在bootstrap.properties配置上设置需要哪个命名空间的配置
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#利用命名空间做环境隔离
spring.cloud.nacos.config.namespace=105da3ac-3e4e-4cb9-af96-3d72fedda6fd
2. 配置级:所有配置的集合
3. 配置级ID:类似于文件名Data ID:
4. 配置分组:默认所有的配置及都属于:default_group
1111,618
每个微服务都创建自己的命名空间,使用分组区分环境,dev
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#利用命名空间做环境隔离
spring.cloud.nacos.config.namespace=868f302f-c0f3-44fb-8ae8-807c7d52a1b1
#配置分组
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.extension-configs[0].dataId=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].dataId=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true
spring.cloud.nacos.config.extension-configs[2].dataId=other.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true
5. 同时加载多个配置信息
- 微服务的任何配置文件都可以放在配置中心中
- 只需要在bootstrap.properties说明加载哪些配置文件即可
- @Value、@ConfigurationProperties…
以前SpringBoot中的任何取值都可以使用,配置中心有的优先使用配置中心的