web-dev-qa-db-ja.com

Beanは、以下を実装するJDK動的プロキシであるため、「タイプ」として挿入できませんでした:reactor.fn.Consumer

Reactor 2を使用するSpring 4アプリケーションは、次のもので開始できません。

***************************
APPLICATION FAILED TO START
***************************

Description:

The bean 'orderHandlerConsumer' could not be injected as a 'fm.data.repository.OrderHandlerConsumer' because it is a JDK dynamic proxy that implements:
    reactor.fn.Consumer


Action:

Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.

OrderHandlerConsumerは本当にシンプルです:

@Service
@Order(Ordered.HIGHEST_PRECEDENCE)
public class OrderHandlerConsumer implements Consumer<Event<OrderEnvelope>> {
    @Override
    public void accept(Event<OrderEnvelope> event) {
        event.getData().getLatch().countDown();
    }
}

何がうまくいかないのでしょうか?

13
Jan Nielsen

Bean名をOrderHandlerConsumerクラスに割り当てて、Autowireの解決がより簡単になるようにすることができます。さらに、具象クラスで自動配線する代わりに、インターフェースで自動配線してみてください。 @Serviceアノテーションを次のように変更できるように、

@Service(value="orderHandlerConsumer")

インターフェイスタイプでAutowireを試行します。

@Autowire  
reactor.fn.Consumer orderHandlerConsumer;
1
levye

以下の自動配線をお試しください

class Test{
    @Autowired
    private Consume orderHandlerConsumer;
}
0
G R