逆向工程使用
1.导入逆向工程
2.下载人人开源后台管理系统脚手架工程(renren-fast)
1.导入工程,创建数据库
2.修改工程shiro依赖SpringSecurity
3.删除部分暂时不需要的业务
3.下载人人开源后台管理系统vue端脚手架工程(renren-fast-vue:组件式开发)
1.vscode导入前端项目
2.前后端联调测试基本功能
4.其他:renren-generator(代码生成器:生成entity/xml/dao/service/vue/sql代码,
让大家专注于复杂业务代码、高并发、高可用、分布式架构等),
renren-fast-adminalte(HTML,css,js)
$ git clone HTTPS
删掉开源项目的.git文件夹,复制进本项目文件夹
git
码云新建仓库,选择语言,添加.gitignore(Maven),添加开源许可证,开发模型(dev分支,master分支)
idea->new->project from version control->git,填写URL,自动clone项目
- 项目内创建微服务new->model,Web和OpenFeign
- 包名规范,
com.包名.微服务名称(组织名统一) - 模块名,包名 提交代码:settings->plugins->gitee安装插件,commit提交到本地仓库,commit and push提交推送到码云
聚合服务
总项目为root
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall</artifactId>
<version>0.0.1</version>
<name>gulimall</name>
<description>聚合服务</description>
<packaging>pom</packaging>
<modules>
<module>xxxx</module>
<module>xxxx</module>
<module>xxxx</module>
<module>xxxx</module>
</modules>
修改.gitignore文件, 忽略垃圾文件 只剩下.gitignore和代码文件
**/mvnw
**/mvnw.cmd
**/.mvn
**/target/
.idea
数据库设计
利用powerDesigner表名,字段,不涉及外键(插入时不检查外键保持一致性)code(真正名字,name(中文名,preview
Database->Generation
每个微服务操作自己的数据库
虚拟机up,MySQL连接虚拟机,vagrant ssh(虚拟机连接sql),docker ps(查看运行容器),要配置容器自动启动(sudo docker update redis/mysql --restart=always)
后端项目
<module>renren-fast</module>
db->mysql.sql,ctrl+c
进入mysql创建数据库,ctrl+v
修改renren-fast,application.yml配置文件:端口号,项目名地址,redis,数据库(dev)
application-dev.yml:修改地址url、用户名、密码
后台:localhost:8080/renren-fast/
前端:localhost:8001/
前端项目
vscode\
1.安装Node.js
利用npm,利用npm下载依赖包
node -v检查版本
设置镜像
2.npm install
3.npm run dev
前后联调
逆向工程
利用renren-generator生成增删改查代码,依旧需要修改配置文件数据库地址、用户名、密码,properties配置文件中修改包名相关的信息,moduleName
localhost/#generator生成代码
生成main文件夹
->resources(java-...controller/dao/entity/service)->mapper\
直接cv到微服务main文件夹中
service中有接口
要引入相关依赖,如mybaitsplus/lombok/shiro/httpcomponents等依赖,new->gulimall-common
cv工程,需要粘贴公共类,在renren-fast中src->main->java->io->renren->common->utils中存储公共类
maven resposity
逆向工程:templates编写生成规则,可注释掉相关注解和引入
mybaitsplus
1.导入依赖
2.配置:参考官方文档,配置数据源和mybaitsplus相关
mysql-connector(mysql兼容,8.0可适配
servlet-api
alt+enter导入包
3.数据源:application.yml配置
datasource:
username:
password:
url:
driver-class-name:
4.mybaitsplus配置
1.@MapperScan
2.mybaitsplus sql配置文件
mapper-locations: classpath:
配置主键自增
id-type:auto
5.server:
port:
- 相关测试代码
//lambda表达式
List<BrandEntity> list = brandService.list(new QueryWrapper<BrandEntity>().eq("brand_id", 1L));
list.forEach((item)->{
System.out.println(item);
});
//快捷键new 实例 alt+enter
分布式插件 Spring Cloud Alibaba
注册中心、配置中心、网关(如之前了解过的oauth2),直接在common中引入依赖<dependencyManagement>控制版本号\
了解nacos:
- discovery 注册发现
1.安装server
2.配置server地址
cloud:
nacos:
discovery:
server-addr:
3.@EnableDiscoveryClient
可注册,开启服务注册发现功能
application:
name:
4.配置管理、服务管理、集群管理
- Feign声明式远程调用 Http协议使微服务可相互调用 (java-...controller/dao/entity/service/feign)
1.引入openfeign
2.编写接口
@FeignClient("远程服务名")
interface接口{
@RequestMapping("请求对应方法")
return
}
3.@EnableFeignClients(basePackages = "feign文件夹的全包名")
自动扫码地址中的@FeignClient接口中声明的方法
- config 配置管理
1.依赖
2.otstrap.properties配置:当前服务名称和地址3.中心默认添加数据集(dataid)应用名.propertiesspring.application.name= spring.cloud.nacos.config.server-addr=(同注册地址
添加任何配置、动态获取配置(两个注解)配置中心有的优先配置中心,而后当前应用的配置文件@RefreshScope 动态刷新 @Value(${coupon.user.name}) 获取配置文件中配置项的名
细节
-
命名隔离:配置隔离
默认public
基于开发、测试,生产环境
基于微服务隔离
···等spring.cloud.nacos.config.namespace= -
配置集
所有配置的集合
-
配置集id
配置文件名
-
配置分组
默认所有配置集都属于:DEFAULT_GROUP
spring.cloud.nacos.config.group= #加载多配置集 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