如何自动绑定接口



基于本期#1623中的对话,活页夹实现和弹簧云流折线

我想注入接收器对象,并订阅输入通道,但在调用注释applicationConfig时似乎未正确创建该对象。

 @Configuration
public class ApplicationConfig {
    @Autowired
    public void configureInboundEventMessageChannelAdapter(EventBus eventBus,Sink sink) {
        System.out.println("sink :" + sink.toString());
        System.out.println("sink input :" + sink.input().toString());
        System.out.println("Bus :" + eventBus.toString());
        InboundEventMessageChannelAdapter inboundEventMessageChannelAdapter = new InboundEventMessageChannelAdapter(eventBus);
        sink.input().subscribe(inboundEventMessageChannelAdapter);
    }

InboundEventMessageChannelAdapter是上述代码中的MessageHandler

输出:

sink :null
sink input :org.springframework.cloud.stream.messaging.DirectWithAttributesChannel@32940ff0
Bus :org.axonframework.eventhandling.SimpleEventBus@707a6ff6
2019-03-02 16:51:05.915  INFO 21 --- [           main] o.s.c.s.m.DirectWithAttributesChannel    : Channel 'unknown.channel.name' has 1 subscriber(s).

绑定的最佳方法是构造函数方式。自动注释有时会将对象实例化为null。使用构造函数依赖性注入,可以使属性最终确定,因此始终具有一个值。

public SomeClass class {
    private final Source source;
    @Autowired
    public SomeClass (Source source){
        this.source = source;
    }
    public void sayHello(String name){
        source
            .output()
           .send(MessageBuilder.withPayload(name).build());
    }
}

最新更新