概述
今天在写dubbo的filter时候,需要注入bean和读取配置文件,然后理所当然的就像springboot其他地方的写法一样,直接用了@Resource和@Value注解。但是本地调试的时候,发现报错,注入的bean和读取的配置变量全部为null,很是不解,于是就上网查了以下资料。
首先,dubbo的拦截器这些组件是由dubbo自己管理的,并不是直接由spring管理的,因此spring的那些注入注解在dubbo里统统不能用。
如果想用可以采取以下代码:
private Environment environment;
public void setEnvironment(Environment environment){
this.environment=environment;
}
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
String headerTopic = environment.getProperty("spring.kafka.header-topic");
Result result = invoker.invoke(invocation);
return result;
}
这样就可以读取到配置文件了。如果想要注入bean,则使用以下代码:
private KafkaTemplate<String, String> headKafkaTemplate;
public void setHeadKafkaTemplate(KafkaTemplate<String, String> headKafkaTemplate){
this.headKafkaTemplate = headKafkaTemplate;
}
dubbo组件实例化后,setter方法会被dubbo调起,然后在ApplicationContext中去查找对应的bean。而且在查找的过程中是优先按照名字去匹配,然后才是type,所以尽量把setter方法名字写成要注入的bean的名字。
以上参考博客为:
Dubbo初始化源码解析
dubbo读取配置文件
dubbo注入bean其他方法
java中的filter注入bean
最后
以上就是朴实钻石为你收集整理的dubbo filter中有关bean注入和配置文件读取的问题的全部内容,希望文章能够帮你解决dubbo filter中有关bean注入和配置文件读取的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复