1.逆向工程renren-generator生成代码
2.SpringCloud Alibaba简介
SpringCloud Alibaba - Nacos:注册中心(服务发现/注册)
SpringCloud Alibaba - Nacos:配置中心(动态配置管理)
SpringCloud - Ribbon:负载均衡
SpringCloud - Feign:声明式 HTTP 客户端(调用远程服务)
SpringCloud Alibaba - Sentinel:服务容错(限流、降级、熔断)
SpringCloud - Gateway:API 网关(webflux 编程模式)
SpringCloud - Sleuth:调用链监控
SpringCloud Alibaba - Seata:原 Fescar,即分布式事务解决方案
3.版本选择
1.5.x 版本适用于 Spring Boot 1.5.x
2.0.x 版本适用于 Spring Boot 2.0.x
2.1.x 版本适用于 Spring Boot 2.1.x
4.项目中的依赖
在 common 项目中引入如下。进行统一管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
5.接入nacos
在common服务加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
在coupon服务MallCouponApplication启动类添加@EnableDiscoveryClient
在member服务MallMemberApplication启动类添加@EnableDiscoveryClient
我本地已经安装好nacos了,启动访问:http://127.0.0.1:8848/nacos/
用户名和密码都是:nacos
6.添加feign
在member服务添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在启动类添加@EnableFeignClients(basePackages = "com.yxw.gulimall.member.feign")
7.测试feign
在coupon服务CouponController添加测试代码
@RequestMapping("/member/list")
public R membercoupons() {
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("满100减10");
return R.ok().put("coupons", Arrays.asList(couponEntity));
}
在member服务添加测试代码
@FeignClient("mall-coupon")
public interface CouponFeignService {
@RequestMapping("coupon/coupon/member/list")
public R membercoupons();
}
在MemberController添加测试代码
@RequestMapping("/coupons")
public R test() {
MemberEntity member = new MemberEntity();
member.setNickname("张三");
R membercoupons = couponFeignService.membercoupons();
return R.ok().put("member", member).put("coupons", membercoupons.get("coupons"));
}
启动coupon和member服务
访问:http://127.0.0.1:8000/member/member/coupons
8.nacos配置中心
在common服务添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
在coupon新建bootstrap.properties文件添加如下信息
spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
nacos添加配置文件
如果配置中心和当前服务配置文件都配置了相同项,优先使用配置中心的配置
测试代码:
在coupon服务添加依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
9.网关gateway
新建服务mall-gateway并在pom文件添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
在启动类添加注解@EnableDiscoveryClient
@EnableDiscoveryClient
//由于网关不需要连接数据库,这里做个排除数据库相关
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MallGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(MallGatewayApplication.class, args);
}
}
在application.properties配置文件添加
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=mall-gateway
server.port=88
在bootstrap.properties配置文件添加
spring.application.name=mall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=a0c67ee6-6827-461e-963b-55ed09864244
在nacos新建配置
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。