谷粒商城学习笔记
由于博主有一些内容学习过 所以有些内容忽略
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3).
谷粒商城笔记(详细版) IDEA2021 基础篇(2/3).
ES6 VUE 基础篇前端笔记
谷粒商城笔记(详细版) IDEA2021 基础篇(3/3).
默认是从docker-Hub拉取镜像
为了加速拉取过程,我们配置阿里云镜像加速
首先登陆进入控制台 搜索容器镜像服务
接着打开你的Linux输入命令进行操作
命令如下
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://d5zog6e6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
设置setting.xml
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
JDK-1.8
true
1.8
1.8
1.8
1.8
插件安装 MyabtisX 和 lombok
安装vscode
常用的vscode插件
没有Git去官网下
首先下载git后点开gitbash
先去gitee码云官网注册自己的账户
# 配置用户名
git config --global user.name "username" //(名字,随意写)
# 配置邮箱
git config --global user.email "[email protected]" // 注册码云账号时使用的邮箱
# 配置ssh免密登录
ssh-keygen -t rsa -C "[email protected]"
三次回车后生成了密钥:公钥私钥
#查看密钥 后面把这个粘贴到Gitee中
cat ~/.ssh/id_rsa.pub
也可以查看密钥
浏览器登录码云后,个人头像上点设置--ssh公钥---随便填个标题---复制
# 测试
ssh -T [email protected]
测试成功,就可以无密给码云推送仓库了
参考我的图片进行新建仓库配置
打开IDEA把你新建的gitee仓库拿过来
url在你刚创建的仓库里拿
4.0.0
com.atguigu.gulimall
gulimall-product
0.0.1-SNAPSHOT
gulimall
聚合
pom
gulimall-coupon
gulimall-member
gulimall-order
gulimall-ware
gulimall-product
接着在根模块的.gitinore设置忽略的文件
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
# 设置忽略没有用的文件
**/mvnw
**/mvnw.cmd
**/.mvn
#忽略子模块的target
**/target/
.idea
#忽略子模块的.gitignore
**/.gitignore
创建数据库规则如下
把给的几张表导入自己的数据库(sql资料去找啊)
记得启动自己的虚拟机 或者 购买的云服务器
使用如下命令设置redis和mysql自启动
sudo docker ps
sudo docker ps -a
# 这两个命令的差别就是后者会显示 【已创建但没有启动的容器】
# 我们接下来设置我们要用的容器每次都是自动启动
sudo docker update redis --restart=always
sudo docker update mysql --restart=always
# 如果不配置上面的内容的话,我们也可以选择手动启动
sudo docker start mysql
sudo docker start redis
# 如果要进入已启动的容器
sudo docker exec -it mysql /bin/bash
# /bin/bash就是进入一般的命令行,如果改成redis就是进入了redis
登录gitee
搜索人人开源
renren-fast
renren-fast vue
复制url git 克隆到本地
然后把后端拖到项目中并作为一个模块加入
后台运行renren-fast启动类后一直提示java找不到符号
其实是lombok版本的问题
我们到其配置文件中更改Lombok版本号为
1.18.20
再起启动运行发现问题解决
使用vscode打开这个项目
打开运行 npm install
然后 npm run dev
解决方案参考自博客
原解决方案链接.
//卸载你原来的 node-sass
npm rebuild node-sass
npm uninstall node-sass
//指定node-sass版本,这句等价于修改package.json文件了。
//注意不要指定4.9.2了
npm install [email protected]
//安装其他依赖:
npm install
# 启动项目:
npm run dev
搜索人人开源 克隆renren-generator
删除其中的.git文件
把其拖入到我们的项目当中
然后更改renren-generator的配置文件
进行代码生成
具体更改如下
然后直接启动(我这里改了端口号)
访问对应的地址
全选然后生产代码(生产一堆sql和一个main文件夹)
把main中的粘贴到对应的项目模块中(发现多出很多内容)
有些爆红是因为依赖没有导入
我们自己定一个gulimall_common模块
首先让guli_product模块依赖这个模块
每一个微服务的依赖 工具类 bean放到这里
common模块的大概依赖
com.baomidou
mybatis-plus-boot-starter
3.5.1
org.projectlombok
lombok
1.18.20
provided
org.apache.httpcomponents
httpcore
4.4.14
commons-lang
commons-lang
2.6
去renren-fast里找到对应的工具类
在renren-common中创建一个包路径相同的utils
把renren-fast common里面的工具类粘过去
总之就是哪里爆红去renren-fast去找
然后粘贴到guli_common模块里
除了shiro有关的依赖 因为用的是springsecurity
因此我们要重新生成controller层代码
到renren-generator模块中修改代码
重新启动renren-generator
把生成的新的controller代码粘贴进去
解决报错
官方视频又添加删除了一些guli-common中的依赖等
自己参照着先解决
最终guli-common依赖如下 更新时间(2022.5.6日)
注意我这个依赖里的spring cloud 和 spring cloud-alibaba版本和你的一样不
不一样改一下啊
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>gulimall</artifactId>
<groupId>com.atguigu.gulimall</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>gulimall_common</artifactId>
<description>每一个微服务的依赖 工具类 bean放到这里</description>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- 公共的myabtis-plus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<!-- <version>3.5.1</version>-->
<version>3.2.0</version>
</dependency>
<!--公共lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!-- 统一返回工具R需要的依赖 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.14</version>
</dependency>
<!-- Query工具类需要的依赖-->
<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>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.9.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
<scope>compile</scope>
</dependency>
<!-- springcloudDISCOVERY-->
<!-- 为了使用新版本的SpringCloud Feign(使用spring-cloud-loadbalancer) 引入 并排除配置-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<!-- 不使用Ribbon 进行客户端负载均衡-->
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<!-- nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--bookstrap启动器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.4</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.7.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
然后测试gulimall-product的基本功能(测试在下面进行测试)
首先配置yml文件
接着更改generator,properties
1 模块pom依赖guli-common模块
2 更改Yml配置文件设置(此处列举一个,具体参照官方视频)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/gulimall_wms?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
server:
port: 11000
官方文档.
在你的guli-common模块中引入依赖统一管理版本
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.2.7.RELEASE
pom
import
官方文档
https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md
找到nacos的startup.cmd文件
编辑配置
nacos启动时,默认以集群方式启动,如果你是单机启动,需要修改startup.cmd文件中的配置
把cluster改为standalone
再次启动发现启动成功
因为我们的discover依赖已经在guli-common模块中
所以只需要对配置文件和启动类进行简单的配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/gulimall_ums?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: gulimall-member
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
server:
port: 8000
package com.atguigu.gulimall.member;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallMemberApplication.class, args);
}
}
重新启动模块
访问localhost:8848/nacos 默认账户密码都为nacos
org.springframework.cloud
spring-cloud-starter-openfeign
package com.atguigu.gulimall.member.feign;
import com.atguigu.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient("gulimall-coupon")
public interface FeignTest {
/**
* 测试feigen
*/
@RequestMapping("/coupon/coupon/test")
public R testFeign();
}
package com.atguigu.gulimall.member;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallMemberApplication.class, args);
}
}
我springboot版本是2.6.7
其openfeign版本如下
由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错
解决方法
加入spring-cloud-loadbalancer依赖 并且在nacos中排除ribbon依赖,不然loadbalancer无效
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
org.springframework.cloud
spring-cloud-starter-loadbalancer
2.2.2.RELEASE
https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md
你的bootstrap.properties文件生效了吗
记得在gulimall-common中引入bootsrap启动类
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.cloud
spring-cloud-starter-bootstrap
3.0.4
* 1、如何使用Nacos作为配置中心统一管理配置
*
* 1)、引入依赖,
*
* com.alibaba.cloud
* spring-cloud-starter-alibaba-nacos-config
*
* 2)、创建一个bootstrap.properties。
* spring.application.name=gulimall-coupon
* spring.cloud.nacos.config.server-addr=127.0.0.1:8848
* 3)、需要给配置中心默认添加一个叫 数据集(Data Id)gulimall-coupon.properties。默认规则,应用名.properties
* 4)、给 应用名.properties 添加任何配置
* 5)、动态获取配置。
* @RefreshScope:动态获取并刷新配置
* @Value("${配置项的名}"):获取到配置。
* 如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置。
假如我们把所有配置文件放在一个命名空间下
又大又臃肿 所以要合理进行配置隔离
这里使用的方式是 微服务名做命名空间+不同环境做group分组
配置文件代码如下
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=1986f4f3-69e0-43bb-859c-abe427b19f3a
#项目中需要的数据
spring.cloud.nacos.config.group=prod
#启动项目的配置文件
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
2、细节
* 1)、命名空间:配置隔离;
* 默认:public(保留空间);默认新增的所有配置都在public空间。
* 1、开发,测试,生产:利用命名空间来做环境隔离。
* 注意:在bootstrap.properties;配置上,需要使用哪个命名空间下的配置,
* spring.cloud.nacos.config.namespace=9de62e44-cd2a-4a82-bf5c-95878bd5e871
* 2、每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
*
* 2)、配置集:所有的配置的集合
*
* 3)、配置集ID:类似文件名。
* Data ID:类似文件名
*
* 4)、配置分组:
* 默认所有的配置集都属于:DEFAULT_GROUP;
* 1111,618,1212
*
* 3、同时加载多个配置集
* 1)、微服务任何配置信息,任何配置文件都可以放在配置中心中
* 2)、只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可
* 3)、@Value,@ConfigurationProperties。。。
* 以前SpringBoot任何方法从配置文件中获取值,都能使用。
* 配置中心有的优先使用配置中心中的,
*
* 项目中的使用:每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod
官方文档
https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/
https://spring.io/projects/spring-cloud-gateway#overview
三大核心概念:
Route:
Predicate断言:
判断是否满足条件
Filter: 过滤器
断言的匹配规则
https://blog.csdn.net/weixin_43199379/article/details/107768203
坑
配置文件写断言等号左边不要写空格 因为是找不到 Query + 空格的
这里springboot版本可能和你不一样 2.6.7
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.6.7
com.atguigu.gulimall
gulimall-gateway
0.0.1-SNAPSHOT
gulimall-gateway
gulimall-gateway
1.8
2021.0.1
com.atguigu.gulimall
gulimall_common
0.0.1-SNAPSHOT
org.springframework.cloud
spring-cloud-starter-gateway
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
#Router And Predicates And Nacos discovery
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
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
application:
name: gulimall-gateway
server:
port: 88
我们访问http://localhost:88/hello?url=baidu
相当于访问
www.baidu.com/hello
我们访问
http://localhost:88/?url=baidu
相当于访问
www.baidu.com
像视频中所讲 定义了许多
application.properties
application.yml
bootstrap.properties
这样显得十分杂乱无章 若胡乱编写可能会遇到冲突,
虽然不报错但无法把服务注册到Nacos配置中心(已经遇到了)
因此做一个规范总结是有必要的
这里以网关的配置文件举例子
代码如下
#GateWay And Nacos discovery
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
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
application:
name: gulimall-gateway
server:
port: 88
# 使用Nacos-配置中心的基本配置
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=a9a88be6-6087-4a6b-adff-64f12d65394d
spring.cloud.nacos.config.group=prop
#加载配置集
spring.cloud.nacos.config.extension-configs[0].data-id=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].data-id=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].data-id=other.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true
前端部分的博客在这里
谷粒商城前端基础部分,更新完毕2022/5/2.
由于篇幅问题
基础篇开发部分在这个博客中进行编写
谷粒商城基础篇开发部分.