I get the following exception when I deploy the code
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.belk.api.adapter.contract.Adapter] is defined: expected single matching bean but found 2: [endeca, solar] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:800) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478) ... 64 more
I have 3 different projects: one is Normal, the second is the Adapter, and the third is Service. The adapter is dependent on Common and Service is dependent on the adapter. All three maven projects. Now in my general project I have an interface called CommonAdapter.java
public interface CommonAdapter { List service() ; }
I have an AdapterFactory.java class in the same project (i, e Common)
@Component public class AdapterFactory { @Autowired Adapter adapter; public Adapter getAdapter(String adapterName){ return adapter; } } <context:component-scan base-package="com.test.api" /> <bean class="org.springframework.beans.factory.config.ServiceLocatorFactoryBean" id="adapterFactory"> <property name="serviceLocatorInterface" value="com.test.api.adapter.manager.AdapterFactory"> </property> </bean>
Now in my adapter project I have implementation classes for CommonAdapter.java One of them is EndecaAdapetr.java and the other is SolarAdapter.java
@Component("endeca") public class EndecaAdapter implements Adapter { List service() {
Now in my Service project, you want to call a service method from the above two classes based on input.
public class ProductSearchServiceImpl { @Autowired private AdapterFactory adapterFactory; public Search searchProducts(){ Adapter endecaAdapter = this.adapterFactory .getAdapter("endeca "); } }
java spring javabeans
user2334926
source share