Spring не может автоматически связать зависимость

I have an application which is not a dynamic web project. I have the arrangement such that its like a library in form of a jar which is exposed via interfaces. I am trying to auto wire this interface into my API project which is Dynamic web project. But it throws bean creation exception

1. I have a MyLibraryCofiguration class in library which has @Configuration and  @Import alongwith @ComponentScan.

@Configuration @Import({ BasicConfiguration.class, OperationalLoggingConfiguration.class, RestConfiguration.class }) @ComponentScan("nl.ming.cram") открытый класс MyConfiguration () {

public MyConfiguration() {
    packages("nl.ming.cram.gateway");
}

@Bean
public MyInterface getMyInterface() {
    return new MyImpl();
}

}

2. My API project has MyApiCofiguration class which has @Import in which I am importing my MyLibraryCofiguration class. In the same class I have used:


@Configuration
@Import({
        MyConfiguration.class
})
@ComponentScan({"nl.ming.api.creditcardlist"})
public class CreditCardListConfiguration {

    @Bean
     public MyInterface getMyInterface() {
        return new CramImpl();
   }
}


3. In my API project , in MyApiService class  - I have @Autowired MyInterface to access methods of library jar as shown below:



@Component
public class MyAPIService {

    @Autowired
    MyInterface MyInterface;    
}


It throws a Bean creation exception for getMyInterface as is shown below - 

org.springframework.beans.factory.BeanCreationException: 
   Error creating bean with name 'creditCardService': Injection of autowired dependencies failed; 

nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: 
nl.ing.cram.gateway.CramInterfacenl.ing.api.creditcardlist.services.CreditCardService.cramIface; 

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getCramInterface': Injection of autowired dependencies failed;

 nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private nl.ing.cram.dao.CramDaonl.ing.cram.gateway.CramImpl.cramDao; 

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cramDao': Injection of resource dependencies failed; 

nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [nl.ing.sc.customerrequest.createcustomerrequest1.CreateCustomerRequestServiceOperationClient] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, mappedName=, description=, name=, type=class java.lang.Object, lookup=, authenticationType=CONTAINER)}


Any help would be appreciated.

1 ответ

Решение

Ни одна пружина не может быть использована в любом Java-приложении.

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type

Я могу видеть вышеупомянутое исключение, это означает, что Spring может найти тип, который вы вводите, но не его реализацию.

Проверьте в вашем Spring-конфиге:-

<context:component-scan base-package="..." />

Причина исключения в трассировке стека исключений:-
В вашем классе nl.ing.cram.gateway.CramImpl.cramDao ему не удалось внедрить зависимость типа CreateCustomerRequestServiceOperationClient, поскольку он не смог найти свою реализацию.

Другие вопросы по тегам