Springcloud学习笔记26 |
您所在的位置:网站首页 › 微服务base › Springcloud学习笔记26 |
1.创建一个新的module
创建完成后,项目结构为: (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 (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/**(1)首先,创建目录和TestController (2)修改gateway网关模块中的路由配置 - id: jeecg-cloud-test uri: lb://jeecg-cloud-test predicates: - Path=/test/**(3)绕开网关,直接访问http://127.0.0.1:7006/test/demo 具体使用见: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)动态数据源配置 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 |