ALL

  • SpringCloud Alibaba微服务商城项目(十二):商品三级分类功能-获取递归树形数据和网关路由设置与跨域

    目录: 获取属性数据接口打通 网关路由与路径重写 统一跨域的处理 1. 获取属性数据接口打通 CategoryController: /** * 查出所有分类以及子分类,树形结构返回 * 1 查出所有数据不需要参数 */ @RequestMapping("/list/tree") public R list(){ // PageUtils page = categoryService.queryPage(params); List<CategoryEntity> list = categoryService.listWithTree(); return R.ok().put("data", list); } CategoryServiceImpl (service接口实现类,采用了反应式编程): @Override public List<CategoryEntity> listWithTree() { // 1. 查出所有分类 // baseMapper可以作为CategoryDao使用,其次我们也可以用autowired引入Dao层,第一种baseMapper请看extends ServiceImpl这个类 List<CategoryEntity> listCats = categoryDao.selectList(null); // 2. 组装成树形结构 //2.1 先找到一级分类 // List<CategoryEntity> level1Menus = listCats.stream().filter(categoryEntity -> // categoryEntity.getParentCid() == 0 // ).collect(Collectors.toList()); //2.2 类的私有方法找到分类的子分类(递归操作 可能会有好几层) List<CategoryEntity> level1Menus = listCats.stream().filter(categoryEntity -> categoryEntity.getParentCid() == 0 ).map(menu -> { menu.setChildren(getChildrens(menu, listCats)); return menu; }).sorted((a,b)->{ return ( a.getSort() == null ?…

    March 26, 2021 0 0
  • Nacos 1.4.1 启动报错[db-load-error]load jdbc.properties error 以及 db.num is null,Unable to start embedded Tomcat

    原因: nacos1.4.1启动用的是集群模式,集群模式需要有数据库支持,这个时候我们就不能用默认单机形式去启动了 我们在startup.cmd文件中第26行可以看到 启动文件第26行 debug过程: 1.在数据库里面创建nacos数据库,执行conf文件夹下的nacos-mysql.sql写入数据 2.修改配置文件application.properties添加数据库链接信息 application.properties里面修改 3.然后复制一份cluster.conf.example改名为cluster.conf,内容为集群的服务器ip 还有其他方法,把之前的mode改为standalone即可 其他地方不用动

    February 6, 2021 0 0
  • vue前端框架基础总结(一):初始化项目

    目录 1 初始化项目 1 初始化项目 a npm init -y b npm install vue

    February 4, 2021 0 0
  • SpringCloud Alibaba微服务商城项目(十):SpringCloud Alibaba Nacos配置中心

    目录 简单的例子告诉我们如何使用 1.1 导入配置pom依赖到common项目 1.2 以coupon项目为例子加入配置中心bootstrap.properties配置文件 1.3 用nacos配置中心进行配置设置 nacos配置中心的命名空间概念与配置分组 2.1 命名空间 2.2 配置集 2.3 配置集ID 2.4 配置分组 2.5 我们自己项目的配置划分 nacos加载多配置集合 3.1 application.yml拆分 3.2 配置文件集成 3.3 注释掉项目内的application.yml文件然后重启测试 1. 简单的例子告诉我们如何使用 这个例子我们以coupon为例子进行配置测试,因为之前nacos服务软件已经安装完整,我们的nacos服务发现以及nacos配置中心都是基于这个nacos中心进行的,所以我们只需要对项目进行简单的配置即可进行此实例,官方文档地址 https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md nacos的官方文档 https://nacos.io/zh-cn/docs/quick-start.html 1.1 导入配置pom依赖到common项目 因为每个微服务模块都需要用到配置中心所以我们把配置中心的pom依赖加入到common项目中去 1.2 以coupon项目为例子加入配置中心bootstrap.properties配置文件 **这个配置文件会优先于application.yml执行, **在application.yml里面写入我们自己的配置 **然后我们在couponController里面写测试方法和属性 // 这个注解是直接引用我们配置文件里面的配置项 @Value("${user.title}") private String title; @Value("${user.age}") private Integer age; @RequestMapping("/test") public R test(){ return R.ok().put("title",title).put("age",this.age); } 然后我们访问接口地址成功返回如下结果 1.3 用nacos配置中心进行配置设置 我们之前用的是本身的配置文件进行参数配置但是如果这样的话,若是出现要修改的情况,就需要重新修改然后编译打包,十分不方便所以我们用nacos配置中心进行动态配置 **以下是我们的配置项 **注意我们修改了配置的属性名称(不能直接用user.name) **如果想动态刷新还需要一个注解 结果如下所示 总结如下 a.引入nacos依赖 b.创建一个bootstrap.properties并且配置 c.需要给配置中心默认添加一个 当前应用名字.properties 这样格式的data-id d.然后给这个配置项添加任何配置 e.应用程序加入注解@RefreshScope 并且用@Value("${配置项名字}") 本地和配置中心优先用的是配置中心 2. nacos配置中心的命名空间概念与配置分组 2.1 命名空间 命名空间是用于配置隔离用的,默认的是public这个空间,新增的配置默认都在这个public空间下面 命名空间是用于配置隔离用的,默认的是public这个空间,新增的配置默认都在这个public空间下面 我们实际开发场景有开发环境配置,测试环境配置,和生产环境配置,所以这个需要明确 **我们尝试创建开发环境测试环境和生产环境的命名空间,如下所示 **我们在prod命名空间下面分别创建我们上面用的配置项,但是配置项的值对比public命名空间的配置项的值我们需要区分对待 prod命名空间的配置* public命名空间的配置* 当然我们项目中用的是默认的public命名空间的配置项,如果我们想用prod命名空间的配置项,该怎么办? 不用担心,只需要在bootstrap.properties进行一个简单的修改即可:不用担心,只需要在bootstrap.properties进行一个简单的修改即可: spring.cloud.nacos.config.namespace这个配置就可以定义我们的命名空间,value是我们nacos配置中心命名空间的id值 然后重启项目看一下修改后的效果:…

    February 4, 2021 0 0
  • SpringCloud Alibaba微服务商城项目(九):SpringCloud Alibaba Nacos服务注册中心和Openfeign远程调用测试

    目录 SpringCloud Alibaba Nacos服务注册中心 1.1 项目引入依赖 1.2 安装nacos server并且启动 1.3 在项目中配置nacos端口以及启动类 1.4 查看我们启动的服务是否注册成功 Openfeign远程调用测试例子 2.1 feign调用的模块配置 2.2 被调用的coupon模块,测试方法书写 2.3 调用方的接口方法书写 2.4 测试远程调用 1. SpringCloud Alibaba Nacos服务注册中心 nacos的使用过程中需要我们安装nacos注册中心的软件,然后我们的项目模块需要配置nacos的依赖,同时项目独立的yml需要配置我们nacos软件注册中心对外开放的接口 官方文档地址 https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md 1.1 项目引入依赖 我们在common模块里面引入依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 1.2 安装nacos server并且启动 下载地址 https://github.com/alibaba/nacos/releases 我们下载1.4.1稳定版本 启动nacos 启动中的问题解析: Nacos 1.4.1 启动报错[db-load-error]load jdbc.properties error 以及 db.num is null,Unable to start embedded Tomcat 1.3 在项目中配置nacos端口以及启动类 **nacos注册中心的端口号是8848,我们的配置如下 **配置启动类 只需要下面标红的注解即可 **然后启动我们的wkkmall-coupon项目 1.4 查看我们启动的服务是否注册成功 我们访问127.0.0.1:8848/nacos,登录用户名密码是nacos nacos 可以看到我们的wkkmall-coupon注册成功了 然后我们吧member模块也注册上去: 2. Openfeign远程调用测试例子 openfeign远程调用的例子我们用member模块与coupon模块做一次模拟,member模块远程调用coupon模块的方法 想要远程调用别的服务要满足下面几个点 a.pom里面要引入openfeign b.编写一个接口然后告诉SpringCloud这个接口需要调用远程服务 2.1 feign调用的模块配置 首先我们明确,想要调用别的模块的模块必须在pom里面引入下面的依赖配置 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> 2.2 被调用的coupon模块,测试方法书写 代码如下所示: @RequestMapping("/memeber/couponlist") public R memberCoupons(){ CouponEntity…

    February 3, 2021 0 0
  • SpringCloud Alibaba微服务商城项目(八):springcloud alibaba和相关组件介绍以及pom依赖引入

    目录 1 介绍一下SpringCloud Alibaba 2 我们使用的SpringCloud Alibaba相关组件 3 common模块配置统一的spring cloud alibaba依赖 1 介绍一下SpringCloud Alibaba 作为阿里的一站式解决方案,SpringCloud Alibaba包含下面的组件解决方案 SpringCloud Alibaba包含下面的组件 Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 RocketMQ:开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。 Dubbo:这个就不用多说了,在国内应用非常广泛的一款高性能 Java RPC 框架。 Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。 Arthas:开源的Java动态追踪工具,基于字节码增强技术,功能非常强大。 2 我们使用的SpringCloud Alibaba相关组件 结合SpringCloud Alibaba我们项目的最终方案如下 SpringCloud Alibaba Nacos:注册中心和配置中心 SpringCloud Ribbon:负载均衡 SpringCloud Feign:生命是HTTP客户端调用远程服务用 SpringCloud Alibaba Sentinel:服务容错 限流熔断降级 SpringCloud GateWay:API网关 SpringCloud Sleuth:链路追踪 SpringCloud Alibaba Seata:分布式事务 github地址: https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md springcloud官方文档 https://spring.io/projects/spring-cloud-alibaba 还有一点要注意我们的spring cloud版本是2.1 greenwhich版本 3 common模块配置统一的spring cloud alibaba依赖 <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> 以上就是我们在common里面的依赖 我们为什么用dependencyManagement? 用这个以后我们在上面的dependencies里面写入 spring boot alibaba的依赖的时候就不需要写版本号了

    February 3, 2021 0 0
  • SpringCloud Alibaba微服务商城项目(七):代码生成器逆向生成所有微服务CURD代码

    目录 coupon模块代码生成 1.1 修改代码生成器配置 1.2 修改generator.properties 1.3 开启生成器然后生成代码 1.4 引入wkkmall-common模块到我们的coupon项目 1.5 配置数据库连接信息然后测试coupon模块 member,order,ware模块代码生成 模块端口规范 1. coupon模块代码生成 1.1 修改代码生成器application.yml数据库名称 这里我们要修改的是数据库名称为wkkmall_sms 如下图所示: 1.2 修改generator.properties 这里主要是修改moduleName 和 table_prefix 1.3 开启生成器然后生成代码 拷贝main代码文件夹到我们的项目目录 1.4 引入wkkmall-common模块到我们的coupon项目 1.5 配置数据库连接信息然后测试coupon模块 配置信息如下 # 应用名称 spring: datasource: username: root password: root url: jdbc:mysql://192.168.21.201:3307/wkkmall_sms driver-class-name: com.mysql.jdbc.Driver application: name: wkkmall-coupon mybatis-plus: # 扫描mapper包 mapper-locations: classpath:/mapper/**/*.xml global-config: db-config: # 设置主键自增 id-type: auto 然后,打开启动类测试一个 /coupon/coupon/list的请求 请求成功 2. member,order,ware模块代码生成 过程与上面一致 3. 模块端口规范 各个模块端口规定如下 coupon:7000 member:8000 order:9000 product:11000 ware:12000

    February 3, 2021 0 0
  • SpringCloud Alibaba微服务商城项目(六):产品product模块测试基本的增删改查功能

    目录 产品启动类整合mybatis-plus 配置数据源,配置mybatis-plus2. 配置数据源,配置mybatis-plus 2.1 common模块配置数据源 2.2 配置数据库与mybatis-plus 2.3 MapperScan扫描dao包 进行单元测试 3.1 插入数据 3.2 更新数据 3.3 查询集合数据 1. 产品启动类整合mybatis-plus 需要在启动类里面进行mybatis-plus的整合,我们需要引入mybatis-plus-starter之前在common模块已经引入了这个 2. 配置数据源,配置mybatis-plus 我们进入https://mvnrepository.com/artifact/mysql/mysql-connector-java 2.1 common模块配置数据源 上面的mysql版本connector引入到我们的common模块 2.2 配置数据库与mybatis-plus 我们设置了数据库的基本配置和mybatis的mapper扫描以及数据库的主键自增,如果后面需要分库分表我们会有其他对应的配置 # 应用名称 spring: datasource: username: root password: root url: jdbc:mysql://192.168.21.201:3307/wkkmall_pms driver-class-name: com.mysql.jdbc.Driver mybatis-plus: # 扫描mapper包 mapper-locations: classpath*:/mapper/**/*.xml global-config: db-config: # 设置主键自增 id-type: auto 2.3 MapperScan扫描dao包 dao包需要自动扫描 3. 进行单元测试 我们先用brand品牌做为例子去进行测试 3.1 插入数据 查看一下数据库:(数据存储成功) 3.2 更新数据 3.3 查询集合数据 本片文章介绍了如何对入口类进行配置,从而成功启动我们的增删改查功能,单元测试里面介绍了基本的增删改查功能

    February 1, 2021 0 0
  • SpringCloud Alibaba微服务商城项目(五):代码生成器renren-generater使用修改与公共common模块依赖引入

    目录 1.安装并配置renren-generator 1.1 git克隆renren-generator到项目根目录 1.2 修改要生成的数据库地址以及配置文件(application.yml和generator.properties) 1.3 启动代码生成器然后生成产品数据库对应的代码 2.测试生成wkkmall-product代码,改造项目,增加common模块(工具类等等) 2.1 代码适配改造,创建common模块 2.2 common引入renren-fast工具类的改造适配 统一修改代码生成器模板,remove权限注解 1.安装并配置renren-generator generator代码生成器的作用是为了节省我们的开发时间,省去我们7-8成的关于增删改查的开发时间,让我们更快的启动我们的项目,专注于项目的核心难点而不是重复的代码堆叠 1.1 git克隆renren-generator到项目根目录** 项目加入到我们主项目的modules里面 1.2 修改要生成的数据库地址以及配置文件(application.yml和generator.properties)** application.yml里面的数据库配置文件修改 generator.properties里面的配置(包名,模块名,表前缀等等) 1.3 启动代码生成器然后生成产品数据库对应的代码 启动成功 然后打开80端口,在界面上选择所有数据表然后点击生成代码 查看生成的压缩包 可以得知我们所需要的mybatis的mapper文件以及java的controller dao service都已经生成完毕,我们只需要把main文件夹拷贝到我们wkkmall-product模块里面的对应位置即可 2.测试生成wkkmall-product代码,改造项目,增加common模块(工具类等等) 因为在生成的代码中,还有很多需要导入的依赖或者是不匹配的包,我们需要做一下调整,比如下面的例子 controller里面的权限注解问题,PageUtils工具类的问题等等 Dao文件里面的mybatis注解等等 实体类里面的lombok没有引入等等 还有很多问题我们下面一一去解决 2.1 代码适配改造,创建common模块 创建maven模块wkkmall-common 产品模块引入common,然后common模块引入mybatis-plus解决dao层的mapper问题 mybatis-plus的官方文档: https://baomidou.com/guide/install.html#release common导入依赖lombok解决实体类的依赖问题 common加入renren-fast工具类 —先创建包package 根据下面的标红的地方创建我们的包路径 —然后复制renren-fast里面的对应工具类到我们新创建的包路径下面总之是缺什么我们就从renren-fast拿什么即可 —controller里面的验证注解类删掉,因为我们不用renren-fast自带的验证规则 2.2 common引入renren-fast工具类的改造适配 改造R类(结果封装类)里面的Httpstatus问题 这里其实是缺httpcomponents组件,我们在https://mvnrepository.com/ 这个官方组件库里面找这个组件 一下是找到的核心包 我们直接导入到common模块即可 改造Query类依赖问题 关于工具包StringUtils我们直接去renren-fast的pom。xml里面去复制对应的依赖即可 <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> 关于SQLFilter的问题我们直接引入renren-fast里面的包即可 但是我们的namespace一定要换成我们当前的wkkmall-common模块的命名空间 其他的问题道理是一样的缺什么就引入什么即可,后面如果有更多的需要引入的依赖咱们会继续做 3. 统一修改代码生成器模板,remove权限注解3. 统一修改代码生成器模板,remove权限注解 对于这个地方我们一个一个改会特别难受这个时候直接修改代码生成器的模板重新生成导入即可 第一步 去掉import引入 第二步 去掉注解 最后检查无误

    January 31, 2021 0 0
  • idea新的模块,右下角蓝色小方块没有出现的问题

    问题概述: 当我们创建新的模块时候,模块文件夹下方的蓝色小方块并没有出现,这个时候我们就不能再项目里面创建新的package了,如何解决这个问题呢 解决方法一 打开我们.idea 文件夹下面的module.xml文件,然后加入我们新的模块即可 解决方法二 按照下图提示把wkk-common的pom.xml加入到maven管理即可

    January 31, 2021 0 0

Contact Us

在线咨询:点击这里给我发消息

邮件:814489173@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code