0

我们正在尝试在引导程序中使用以下设置访问 consul KV 存储,并在代码中使用 @Value("${configvalue}") 读取它。

  application:
        name: appname
   cloud:
   consul:
      host: consulhost
      port: 8500
      config :
       enabled: true
 


@Value("${configvalue}") 
private String configvalue; 

@GetMapping("/home") 
private String home() { return configvalue; } 

public Message<String> trans4mformat(Message<JsonNode> msg) 
{ 
System.out.println("********Got the consul parameters-->"+configvalue);
 //do transform and return Message<String> 
} 

<int:gateway  id="inboundListener" service-interface="KafkaGateway" default-request-channel="inboundChannel" error-channel="errorChannel"/>

<int:transformer id="transform" input-channel="inboundChannel" output-channel="outboundChannel"  method="trans4mformat" requires-reply="false" > 
<bean id="trns4m" class="com.package.Tranformation"/>
<int:poller fixed-rate="5"/>
</int:transformer>

这在 Rest Controller 中使用时效果很好;但是我们有一个 kafka 监听器和一个从它开始的集成流,我们需要在转换器内部访问这个 @Value("${configvalue}") ?这总是给出 null; 虽然我们可以在单独的方法中通过 get HTTP 调用看到该值。

4

1 回答 1

0
AbstractApplicationContext context = new ClassPathXmlApplicationContext("/IntegrationContext.xml",Application.class);
KafkaGateway kgw = (KafkaGateway) context.getBean("inboundListener");

这就是我正在做的;现在我把它改成了

    @Autowired
    private KafkaGateway kgw;

现在我再也看不到那个问题了。谢谢

于 2020-07-16T03:59:28.697 回答