У меня есть большая проблема с @Autowired что всегда вернуться за исключениемSpring 3 Autowired BeanInitializationException
Initialization боба не удалось; вложенное исключение org.springframework.beans.factory.BeanInitializationException: свойство «ServiceFactory» требуется для боба «A»
Вот краткое всего (я использую Spring 3.2 и я поставил всю банку в в нужном месте WEB-INF/lib).
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:annotation-config />
<context:component-scan base-package="com.sc" />
<!-- Comment out - we are going to use @Component @Autowired - 2014-01-07
<bean id="A" class="com.sc.A">
<property name="serviceFactory" ref="serviceFactoryBean" />
</bean>
-->
<bean id="serviceFactoryBean" class="com.sc.ServiceFactory" autowire="byName" />
</beans>
Содержание класса com.sc.A
@Component
public class A
{
private Logger logger = Logger.getLogger(A.class);
// @Autowired -- 2014-01-07 comment out as not need it since annotation in setter below
// @Qualifier("serviceFactoryBean")
private ServiceFactory serviceFactory;
public A()
{ }
@Autowired // add 2014-01-07
@Required
public void setServiceFactory(ServiceFactory serviceFactory)
{
this.serviceFactory = serviceFactory;
}
public boolean checkSomething()
{
if(this.serviceFactory == null)
logger.error("serviceFactory is null. Autowired failed");
// do something
}
} // end of class A
Содержание класса com.sc.ServiceFactory
// @Component -- comment out 2014-01-07
public class ServiceFactory
{
// do whatever
}
Затем я составил классы и запустил его в причал, и когда причал поднялся, он всегда бросает длинное исключение
org.springframework.beans.factory.BeanCreationException: Ошибка создания bean-компонента с именем «A», указанным в URL-адресе ... Инициализация компонента не выполнена; вложенное исключение org.springframework.beans.factory.BeanInitializationException: свойство «ServiceFactory» требуется для боба «A»
У меня есть много попробовать комбинацию с и без аннотации к чему не привели. Очень неприятно сталкиваться с этой ошибкой.
Пожалуйста, помогите
У вас есть геттер/сеттер для ServiceFactory в вашем А-классе? Также вы смешиваете что-то. Если вы используете @Autowired, вам не нужно определять компоненты в вашем xml вообще –
да, я получил и установил в A-классе для serviceFactory. – Spring
Я не уверен, но удалю 'autowire =" byName "' и посмотрим, работает ли он или нет. Кстати, '@ Required' вообще не требуется,' @ Autowired' имеет параметр для него, а его значение по умолчанию - 'required = true'. –