У меня есть три класса 1) Интерфейс 2) класс, который реализует интерфейс 3) статический завод, который возвратит второй класс экземпляра как экземпляр интерфейса классаКак создать боб как экземпляр интерфейса класса
public Interface MyInterface {
}
public class Myclass implements MyInterface {
}
public Class MyStaticFactory {
public static MyInterface getInstance() {
MyInterface myClassInstance = new Myclass();
return myClassInstance;
}
}
Я хочу создать компонент MyClass в качестве экземпляра MyInterface. Mycode для этого является
<bean id="staticFactory" class="MyStaticFactory">
</bean>
<bean id="myclass" class="MyInterface" factory-bean="staticFactory" factory-method="getInstance">
</bean>
Но приведенный выше код я получаю исключение
org.springframework.beans.factory.BeanCreationException: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private MyInterface ; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [MyInterface] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at com.amazon.coral.reflect.instantiate.SpringInstantiatorFactory$1.newInstance(SpringInstantiatorFactory.java:175)
Я пытаюсь получить доступ к компоненту, используя следующий код
@Autowired
private MyInterface MyclassInstance
ли это действительный предмет создать компонент как экземпляр интерфейса InterfaceClass? Как загрузить экземпляр MyClass в переменной класса MyInterface с помощью Spring?
Вы использовали Autowired в любом месте или вы маскировать любой код из выше? Пожалуйста, вставьте фактический код, поскольку я думаю, что что-то не хватает из вашего фактического кода и кода, который вы вставили выше? Также почему вы создаете экземпляр MyStaticFactory, поскольку он не имеет смысла там, и у вас есть что-то вроде ' ' –
SMA
Я использую autwired для доступа к моему боб. Я обновил в своем вопросе, как я использую компонент. Я сомневаюсь, как мы расскажем весне, что мы собираемся создать экземпляр «MyClass» в переменной класса «MyInterface» с помощью snipper-кода » ' –