零.
1. 业务对应的数据库
- product -> gulimall-pms
- coupon -> gulimall-sms
- member -> gulimall-ums
- order -> gulimall-oms
- ware -> gulimall-wms
一. 人人开源
1. renren-fast-vue: 前台
- renren-fast-vue
https://www.jianshu.com/p/2be02670484e
2. renren-fast: 后台
-
查看
application.yml
配置文件中调用的环境
-
在对应的环境中修改数据源信息
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://www.jiangfengtime.top:3307/gulimall_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: 123456
-
在数据库中创建所需的数据库
3. renren-generator代码生成器
1. 代码生成
-
下载
-
导入项目
-
配置
-
启动项目
启动后通过浏览器访问:
localhost:80
就是代码生成器的可视化界面
-
点击生成代码, 就会下载所生成的代码, 把main目录下的代码拷贝到指定的模块中即可
2. 相关包引入
由于此时还有很多的包没有引入, 所以还需要引入所需的包
-
创建一个公共模块, 用于引入公共的配置
-
解决dao层的缺少的依赖, 引入mybatis-plus
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency>
-
解决en’tity层缺少的依赖, 引入lombok
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency>
-
引入service缺少的工具类
去之前导入的renren-fast项目中导入对应的公共类
-
引入R后, R中会报错, 还需要引入
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.14</version> </dependency>
-
引入Query后, Query会报错
还需要引入
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency>
-
此时只有controller层报错
这个是和权限控制相关的注解, 现在还用不到可以去代码生成器中将这些注解注释掉
-
然后重新使用代码生成器生成相关代码, 导入到项目即可
2. nacos注册中心
-
下载nacos服务器并启动
-
下载地址: https://github.com/alibaba/nacos/releases
-
启动
-
-
引入maven依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
-
在application.yml中配置
# 配置nacos的服务地址
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 为每个服务设置一个服务名, 如果不配置则看不到
application:
name: gulimall-coupon
-
在启动类中添加注解
@EnableDiscoveryClient
-
web ui页面:
http://localhost:8848/nacos/
3. 集成Feign
-
引入openFeign依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
-
编写一个接口, 告诉SpringCloud这个接口需要调用远程服务
如果要在member模块中远程调用coupon中的方法, 则需要在member中创建一个接口方法, 用于指定该方法对应的远程调用发服务名和其对应的方法
/** * 指定远程调用的服务名 */ @FeignClient("gulimall-coupon") public interface CouponFeignService { /** * 如果本模块中调用接口中的当前方法, 就会去注册中心找 * "gulimall-coupon"中的"/coupon/coupon/member/list"方法 * * @return */ @RequestMapping("/coupon/coupon/member/list") public R memberCoupons(); }
-
在启动类中开启远程调用
@SpringBootApplication @EnableDiscoveryClient // 开启Nacos服务 // 开启Feign服务, 并指定远程调用接口的全路径包名 @EnableFeignClients(basePackages = "com.hjf.gulimall.member.feign") public class GulimallMemberApplication { public static void main(String[] args) { SpringApplication.run(GulimallMemberApplication.class, args); } }
4. nacos配置中心
1. 配置
通过@value注解可以读取配置文件中的内容, 但是如果要修改配置文件中的内容则需要重新启动服务, 所以可以通过nacos来动态配置
-
引入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
-
nacos配置中创建配置文件
启动项目时日志文件中可以看见项目加载一个日志文件, 文件名:
应用名.properties
Data ID 就是配置文件的名称
-
在项目的controller中添加自动刷新的注解
@RefreshScope
, 以及通过@Value来动态获取配置文件中的值
-
此时只要修改配置中心中的配置文件内容, 就可以动态的修改其配置内容
2. nacos细节
1. 命名空间
-
命名空间: 配置隔离,
-
默认是调用
public
命名空间的配置文件 -
调用指定命名空间
查看命名空间对应的id
-
在配置文件中指定生效命名空间的id
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 指定命名空间
spring.cloud.nacos.config.namespace=80535f37-eaa4-4b2f-b43d-471c54f63eee
# 指定分组
spring.cloud.nacos.config.group=test
- 可以利用命名空间为不同的业务场景生成特定的配置文件. 如: 开发, 测试, 生产
- 每个微服务之间互相隔离配置, 每个微服务都创建自己的命名空间, 只加载自己命名空间下的所有配置
2. 配置分组
-
默认所有的配置集都属于: DEFAULT_GROUP
-
指定分组
spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848 # 指定命名空间 spring.cloud.nacos.config.namespace=80535f37-eaa4-4b2f-b43d-471c54f63eee # 指定分组 spring.cloud.nacos.config.group=test
3. 同时加载多个数据集
-
将配置文件拆分成多个配置文件
-
在
bootstrap.properties
中进行配置指定spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848 # 指定命名空间 spring.cloud.nacos.config.namespace=d77d0c77-269f-4cac-8984-21ec5ad40410 # 第一个配置文件的名称, 组别, 是否动态更改 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
5. gateway网关
-
引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>
-
application.properties
配置文件spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.application.name=gulimall-gateway server.port=88
-
nacos中的配置信息
spring: application: name: gulimall-gateway
-
bootstrap.yml
spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=e498c541-4f0c-4ea4-92fc-15a05052517a spring.cloud.nacos.config.group=dev
-
配置路由规则
application.yml
spring: cloud: gateway: routes: - id: baidu_route uri: https://www.baidu.com predicates: - Query=url,baidu - id: qq_route uri: https://www.qq.com predicates: - Query=url,qq