1.spring cloud 环境,项目有eureka server,config-server,zuul集成shiro
spring boot 版本 2.2.1.RELEASE
springg cloud: Hoxton.M3
shiro:1.2.3
2.设计的技术点
a.多模块下的pom关系。
parent的pom采用
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
子模块pom的parent采用父模块,子模块如果引用某个组件需要崽子模块引用需要的组件
<parent> <groupId>poetry</groupId> <artifactId>poetry-parent2</artifactId> <version>0.0.1-SNAPSHOT</version> </parent>
其主要目的是利用maven的继承功能。
b.子模块可以不需要spring application文件(个人认为整个project只有一个main入口),也可以没有配置文件,通过main所在的模块引用子模块组件如
<dependency> <groupId>poetry</groupId> <artifactId>common-bootservice</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
这样common-bootservice的配置可以在主模块的配置文件中,也可以是统一的配置中心如github上如
主模块配置文件中配置要同步的配置,配置文件名称可以随便定义,但是要和主模块中的名称一致。
C.@Configuraton注解的bean依赖
常见的no qualifying bean of type available 错误,最简单丑陋的解决方式是在spring application文件添加注解:
一个有意思的 在Bean依赖的场景如
cachemanager类的bean如下:
在另外一个bean中引用
请注意cachemanager的函数名为cachemanager,引用的参数名称为cacheManager,二者相同,运行主模块一直报No qualifying bean of type 'cacheManager' available!!!! 但如果 cachemanager的函数改成
程序可以正常运行!!,magic!