一、人人开源搭建后台管理页面
1.整合renren-fast
- 下载renren-fast、renren-vue
- renren-fast加入gulimall项目
3. 创建renren-fast数据库,并且修改新的数据源
2.配置前端环境
- 下载node.js,并配置npm淘宝镜像
npm config set registry https://registry.npm.taobao.org
-
vscode终端中,输入 npm install
版本最好与教程一致
-
构建成功后,npd run dev进行部署
3.配置代码生成器
- 下载renren-generator
- 修改项目中的数据源、properties,依次生成各项目的代码
3. 控制台逆向生成代码并替换
导入新的代码以后发现很多依赖没有,报红,这时候需要添加这些依赖
4. 创建common工程,把通用代码导入
5. 各微服务依赖common工程
<dependencies>
<!-- mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<!-- httpComponents-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.12</version>
</dependency>
<!-- commons-lang-->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
<!-- Servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
4.整合Mybatis-Plus
1.导入数据库驱动
2.在yml配置数据源相关信息
3.mybatis-plus配置@MapperScan
4.配置sql映射文件位置
mybatis-plus:
加*的意思是扫描所有的classpath路径,包括引入的jar包
mapper-locations: classpath*:/mapper/**/*.xml
全局配置自增主键
global-config:
db-config:
id-type: auto
整合过程中,实例类报错
二、分布式中心,SpringCloud Alibaba引入
1.Common包引入SpringCloud Alibaba
<dependencyManagement>
<dependencies>
<!-- SpringCloud Alibaba-->
<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>
二.Nacos-注册中心
1.引入依赖
<!-- Nacos-服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>
2.配置文件配置Nacos Server地址
spring:
cloud:
nacos:
discovery:
server-addr: 49.232.96.7:8848
application:
name: gulimall-coupon
3.开启注册发现
使用@EnableDiscoveryClient注解开始服务注册与发现
4.Nacos管理页面查看是否注册成功
三、使用Feign远程调用
Feign是一个声明式的HTTP客户端,它的目的就是让远程调用更加简单。Feign提供了HTTP请求模板,通过编写简单的接口和插入注释,就可以定义好HTTP请求的参数、格式、地址。
Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让我们不再需要显式的使用这两个组件。
1.引入依赖
<!-- openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.声明远程调用接口
被调用方
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@RequestMapping("/member/list")
public R membercoupons(){
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("满100减10");
return R.ok().put("coupons",Arrays.asList(couponEntity));
}
调用方
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list")
public R membercoupons();
}
开启远程调用功能
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
public class GulimallMemberApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallMemberApplication.class, args);
}
}
在member服务远程调用coupon的服务
@Autowired
CouponFeignService couponFeignService;
@RequestMapping("coupons")
public R test(){
MemberEntity member = new MemberEntity();
member.setNickname("张三");
R membercoupons = couponFeignService.membercoupons();
Object coupons = membercoupons.get("coupons");
return R.ok().put("member",member).put("coupons",coupons);
}
如果被调用的服务没启动,则会报错500
四、Nacos-配置中心
1.示例
1.引入依赖
<!-- Nacos-配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
</dependency>
2.配置bootstrap.properties
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=49.232.96.7:8848
3.在Nacos中新建配置文件
4.在相应的Controller加入注解,动态刷新配置
@Value("${}")
@RefreshScope
2.命名空间和配置分组
1.命名空间(环境隔离、微服务隔离)
主要用作配置隔离,默认为public,新增的所有配置都在public空间
在Nacos控制台新建dev、prop、test命名空间
如果需要指定命名空间,需要在bootstrap.properties进行配置
id为Nacos自动生成的id
2.配置集:所有的配置的集合
3.配置集ID:类似文件名
Data ID :文件名
4.配置分组:Group
每个微服务创建自己的命名空间,使用配置分组来区分环境,dev,prod,test
spring.cloud.nacos.config.group=
5.加载多配置集
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=datasource.yml
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[1].group=datasource.yml
spring.cloud.nacos.config.ext-config[1].refresh=true
五、Gateway
网关作为流量入口,常用功能包括路由转发、权限校验、限流控制。SpringCloud gateway作为SpringCloud的第二代网关框架,取代了Zuul网关。
1.示例
1.开启服务注册发现
配置nacos的注册中心地址,配置application.properties、bootstrap.properties
2.application.yml配置路由规则
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq