web-dev-qa-db-fra.com

Le bean n'a pas pu être injecté en tant que 'Type' car il s'agit d'un proxy dynamique JDK qui implémente: reactor.fn.Consumer

Mon application Spring 4, qui utilise Reactor 2, ne démarre pas avec:

***************************
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 est vraiment simple:

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

Des idées qui pourraient mal tourner?

13
Jan Nielsen

Vous pouvez attribuer un nom de bean à votre classe OrderHandlerConsumer afin que la résolution Autowire soit plus facile. De plus, au lieu de câblage automatique avec la classe concrète, essayez de câbler automatiquement avec l'interface. Pour que vous puissiez remplacer l'annotation @Service par,

@Service(value="orderHandlerConsumer")

et essayez d'Autowire avec le type d'interface,

@Autowire  
reactor.fn.Consumer orderHandlerConsumer;
1
levye

Veuillez essayer le câblage automatique comme ci-dessous

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