最近公司项目中用到的微服务,技术使用springboot+dubbo的方案,权限使用Shiro,当在shiro的自定义realm中注入dubbo服务的时候发现一直是null,究其原因发现只要你给filter配置了securityManager就会导致dubbo的service无法注入,项目中使用的是注解的形式,解决方案是把需要注入的服务使用配置文件的形式进行配置,代码如下
<dubbo:reference id="userDubboService"
interface="com.pactera.biz.dubbo.service.UserService" check="false" version="1.0.0" timeout="6000"/>
<dubbo:reference id="roleService"
interface="com.pactera.biz.dubbo.service.RoleService" check="false" version="1.0.0" timeout="6000"/>
<dubbo:reference id="organizationService"
interface="com.pactera.biz.dubbo.service.OrganizationService" check="false" version="1.0.0" timeout="6000"/>
庆幸的是dubbo服务可以以注解和配置文件的形式同时存在,其余地方依然可以使用@Reference(version="1.0")的注解形式。