权限管理系统搭建记录
权限管理系统
记录搭建基于
oauth2+gateway
权限管理系统中遇到的问题汇总。参考开源项目:pigX,mall-swarm,springcloud-learning
intoview-auth
服务启动报错
2022-09-19 15:57:52.991 ERROR 15728 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.intoview.auth.config.Oauth2Config required a bean of type 'com.intoview.admin.api.feign.RemoteUserService' that could not be found.
Action:
Consider defining a bean of type 'com.intoview.admin.api.feign.RemoteUserService' in your configuration.
intoview-upms
:是用户和系统管理服务,包结构是下分成了intoview-upms-api
和intoview-upms-biz
,api
是只有entity
,dto
等实体类,并把feign
远程调用接口也放在这个下面,作为jar
包分发到各个服务,这样就避免了每个服务都要引入openfeign
进行调用,把upms
的需要暴露远程调用的接口统一管理。biz
是业务类controller
,service
等,实现具体功能。这个结构模仿自pigX
,这个报错原因是:原生的@EnableFeignClients
默认有个扫描范围,这个结构把feign
写到了另外的地方,所以扫描不到了,pigX
的做法是重写了@EnableFeignClients
注解,给basePackages
增加了默认值,或者是3方法,给EnableFeignClients
指定包。
pigX
文档解释:
- 在t。Clients
默认的扫描范围是
com.pig4cloud.pig.admin包的所有
FeignClient`。 - 而由于微服务拆分所有的
feignClient
都在com.pig4cloud.pig.模块.api
包里面,这样默认情况会扫描不到 - 除非明确指定扫描范围
@EnableFeignClients("com.pig4cloud.pig.模块.api")
- 使用了
@EnablePigFeignClients
默认扫描com.pig4cloud.pigx
下边的feignClient
更为简洁
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@EnableFeignClients
public @interface EnablePigxFeignClients {
String[] value() default {};
// 指定默认的扫描范围
String[] basePackages() default {"com.pig4cloud.pigx"};
Class<?>[] basePackageClasses() default {};
Class<?>[] defaultConfiguration() default {};
Class<?>[] clients() default {};
}
解决方法:直接给调用方配置指定扫描路径为@EnableFeignClients("com.intoview")
。