spring-boot-dubbo icon indicating copy to clipboard operation
spring-boot-dubbo copied to clipboard

在Shiro 的realm中注入dubbo 服务 总是 null

Open ftqh-johnny opened this issue 9 years ago • 5 comments

调试时,发现dubbo 实例化服务是在 @Configuration之后进行(realm初始化之后),所以realm中的依赖的dubbo服务为null,请问如何调整这个加载顺序。

ftqh-johnny avatar Jul 26 '16 04:07 ftqh-johnny

1.首先你的Configuration加载spring.xml,spring-shiro.xml 2.然后spring.xml improt dubbo-consu..xml(服务消费配置) 3.在spring-shiro.xml 的realm bean 中引用发布的消费接口

houjingwei avatar Oct 14 '16 09:10 houjingwei

xml方式是没问题的,使用java config的方式时取不到,要在@Configuration标识的类中使用@Bean优先定义服务,这样在realm才能取到。其他在controller层用的服务,不需要优先定义,按照作者提供的方式使用即可。

ftqh-johnny avatar Oct 19 '16 01:10 ftqh-johnny

@ftqh-johnny 你好,我遇到了和你一模一样的问题,shiro自定义myrealm,无法获取dubbox的服务,是优先级的问题了。请问如何具体在 Configuration配置类中,优先定义需要的服务bean

cesar-blog avatar Dec 21 '17 11:12 cesar-blog

@ftqh-johnny @cesar-blog 我也有同样的问题,问一下,如果不用xml的方式你们是怎么解决的?

drluorose avatar Dec 03 '18 16:12 drluorose

可以通过构造的方式注入service

// configuration
@Bean
public Realm realm(SysUserService sysUserService) {
    UserRealm userRealm = new UserRealm(sysUserService);
    return userRealm;
}
// realm
public class UserRealm extends AuthorizingRealm {
    SysUserService sysUserService;
    public UserRealm(SysUserService sysUserService) {
        this.sysUserService = sysUserService;
    }
    ...
}

quavario avatar Dec 12 '19 00:12 quavario