Springcloud学习笔记26

您所在的位置:网站首页 微服务base Springcloud学习笔记26

Springcloud学习笔记26

2024-06-10 20:54| 来源: 网络整理| 查看: 265

1.创建一个新的module

 

 

 创建完成后,项目结构为:

 2.创建文件目录、启动类

(1)在pom文件中添加依赖和打包插件

jeecg-cloud-module org.jeecgframework.boot 2.4.6 4.0.0 org.jeecgframework.boot jeecg-cloud-test org.jeecgframework.boot jeecg-boot-base-core org.jeecgframework.boot jeecg-boot-starter-cloud org.springframework.boot spring-boot-maven-plugin

(2)添加配置文件application.yml

server: port: 7004 spring: application: name: jeecg-cloud-test

(3)添加启动类

package org.jeecg; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication(scanBasePackages = "org.jeecg") @EnableFeignClients(basePackages = "org.jeecg") public class JeecgCloudTestApplication { public static void main(String[] args) { SpringApplication.run(JeecgCloudTestApplication.class, args); } }

启动JeecgCloudTestApplication类,可以看到项目启动成功。

注意:@EnableFeignClients(basePackages = "org.jeecg")这个注解一定要加上,否则会报‘org.jeecg.common.api.CommonAPI' not be found 错误。

模块的启动顺序为(1)JeecgNacosApplication nacos应用 (2)JeecgGatewayApplication 网关应用 (3)JeecgCloudTestApplication 测试应用

 此时,查看http://192.168.141.128:8848/nacos/index.html可见

 

 3.在jeecg-cloud-gateway中配置路由信息

打开jeecg-cloud-gateway模块中的application.yml文件

添加如下内容

- id: jeecg-cloud-test uri: lb://jeecg-cloud-test predicates: - Path=/test/**

 4.创建测试类与postman测试

(1)首先,创建目录和TestController

@Slf4j @Api(tags = "test") @RestController @RequestMapping("/test") public class TestController { @GetMapping(value = "/demo") @ApiOperation(value = "测试方法", notes = "测试方法") public Result methodTest() { return Result.OK("这是测试方法TestController"); } }

(2)修改gateway网关模块中的路由配置

- id: jeecg-cloud-test uri: lb://jeecg-cloud-test predicates: - Path=/test/**

(3)绕开网关,直接访问http://127.0.0.1:7006/test/demo

5.利用jeecg-boot代码生成器自动生成代码

具体使用见:https://www.cnblogs.com/luckyplj/p/15393648.html

注意:代码生成器生成的代码,务必按照包名规则 org.jeecg.modules.*进行初始化,其他请了解jeecgboot mybatis的包扫描规则,不然bean扫描不到!

如果未按包名规则正确配置,会报如下错误。

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'pmSubsysHostsController': Unsatisfied dependency expressed through field 'service'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'pmSubsysHostsServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.jeecg.flep.mapper.PmSubsysHostsMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'pmSubsysHostsServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.jeecg.flep.mapper.PmSubsysHostsMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] ... 20 common frames omitted Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.jeecg.flep.mapper.PmSubsysHostsMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1717) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1273) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE] ... 33 common frames omitted

正常的模块结构应该如下所示:

若要自定义包结构,可参考https://www.cnblogs.com/luckyplj/p/15397610.html

6 配置动态数据源

(1)动态数据源配置

datasource: master: url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: plj824 driver-class-name: com.mysql.cj.jdbc.Driver # 多数据源配置 multi-datasource1: url: jdbc:mysql://localhost:3306/flep?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: plj824 driver-class-name: com.mysql.cj.jdbc.Driver

master 为主数据源,系统默认数据源multi-datasource1 :自定义的第三方数据源,multi-datasource1名称随便定义

(2)使用 @DS 切换数据源。@DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。

注解在service实现或mapper接口方法上,但强烈不建议同时在service和mapper注解。 (可能会有问题)

 

注解结果 没有@DS 默认数据源 @DS("dsName") dsName可以为组名也可以为具体某个库的名称

 代码示例:

@Service @DS("multi-datasource1") public class BsClientSubsysServiceImpl extends ServiceImpl implements IBsClientSubsysService { }

此时,利用postman测试。

参考文献:

jeecg-boot:注解扫描范围问题    https://blog.csdn.net/gwcgwcjava/article/details/95967349

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3