weibocom / motan

A cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services.
Other
5.89k stars 1.78k forks source link

motan 采用xml的配置方式, BasicServiceConfigBean 注入不了 #611

Open yu199195 opened 6 years ago

yu199195 commented 6 years ago

bean of type 'com.weibo.api.motan.config.springsupport.BasicServiceConfigBean' that could not be found.

@Autowired private BasicServiceConfigBean basicServiceConfigBean;

xml 配置

<!-- 通用配置,多个rpc服务使用相同的基础配置. group和module定义具体的服务池。export格式为“protocol id:提供服务的端口”-->
<motan:basicService export="accountMotan:8002"
                    accessLog="false" shareChannel="true"
                    module="account-service"
                    application="account-service" registry="registry" id="serviceBasicConfig"/>
rayzhang0603 commented 6 years ago

在正常使用中会自动处理BasicServiceConfig的依赖关系,不需要进行任何BasicServiceInterfaceConfig的注入。实际使用中也不希望对service相关的bean进行任何额外的操作。

xml配置方式请参照motan-demo-server模块中的motan_demo_server.xml。 注解方式可以参考motan-demo-server模块中的AnnotationRpcServerDemo.java

yu199195 commented 6 years ago

其实我想获取BasicServiceInterfaceConfig 的modul 或者是application属性的数据, 我采用xml的配置,然后 注入BasicServiceInterfaceConfig,发现注入的为空,只能采用 @Bean的方式。。 难道xml的方式配置,BasicServiceInterfaceConfig 框架不会把它自动注入到spring容器中吗? 还有个问题是,motan,没有单独设置配置application的地方吗?

rayzhang0603 commented 6 years ago

没有明白为什么需要从basicservice中获取module数据。。service启动后自动进行导出,框架层面不推荐获取service相关的bean。

第二个问题,单独配置application也不太理解,service和basicservice中都可以配置application 呀,还需要在什么场合下变更吗?

yu199195 commented 6 years ago

basicservice 中配置了application信息,现在我想获取这个信息,应该如何获取

yu199195 commented 6 years ago

在客户端(消费方) BasicRefererConfigBean , 提供方 BasicServiceConfigBean

rayzhang0603 commented 6 years ago

如果是你配置的,建议使用placeholder占位符,在需要使用的地方统一配置就好,BasicRefererConfigBean并不显示对使用者暴露,不建议直接引用

yu199195 commented 6 years ago

我在代码运行的时候,我又想获取application的信息。。 代码里面获取之前配置application信息,我的意思是:我配置的application信息,框架是做了保存到哪个类吧,现在我想获取这个信息。。thanks

rayzhang0603 commented 6 years ago

这个问题得看一下你代码的作用,如果是在rpc请求中需要获取,请使用motan提供的filter扩展方式,在filter中是可以获取全部配置与框架内部信息;如果是在应用层面,motan框架并不对外暴露自身的配置,如果需要使用,在你的代码中自己配置一个application就好