Я новичок в весне и стараюсь добиться успеха. Я хотел бы использовать инъекцию зависимостей на основе xml setter и избегать разметки «@whatever» в Java.Ошибка впрыска пружины 3.1 3.1
Я использую NetBeans 7 с Spring 3.1.1, и у меня есть код Struts 2 в проекте, который отлично работает.
Проблема заключается в том, что инъекция зависимости не работает вообще (accountService остается NULL), поэтому я предполагаю, что я не настроен должным образом. Любая помощь будет оценена!
BaseActionUserAware класс, который нуждается в инъекции:
public class BaseActionUserAware extends BaseAction
{
protected AccountService accountService;
protected String username;
@Override
public String execute() {
super.execute();
// accountService = new AccountServiceImpl();
Object accountID = session.get(SessionProperties.ACCOUNT_ID);
if(null != accountID) {
AccountBean account = accountService.getAccount((int)accountID);
username = account.getUsername();
}
return SUCCESS;
}
public void setAccountService(AccountService accountService) {
this.accountService = accountService;
}
public String getUsername() {
return username;
}
}
... комментируемого код указывает на то, что я хотел бы достичь; Я бы хотел, чтобы AccountService был введен с помощью AccountServiceImpl.
Вот мой WEB-INF/applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<bean id="accountService" class="hyperbook.service.impl.AccountServiceImpl"/>
<bean id="baseActionUserAware" class="hyperbook.action.BaseActionUserAware">
<property name="accountService" ref="accountService"/>
</bean>
</beans>
... Я дважды проверил полностью квалифицированные имена классов, те, являются правильными.
Я недавно добавил следующее в мой файл WEB-INF/web.xml, но это не помогло вообще:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
Опять же, любая помощь будет действительно цениться. Благодаря!!
[EDIT] Следует также упомянуть - BaseActionUserAware никогда не создается в Java. Скорее, он используется исключительно для классов действия Struts 2. Следовательно, определение baseActionUserAware в applicationContext.xml может быть полностью неправильным/ненужным. Я еще не знаю достаточно о Весне.
Закрытый голос еще более странный. –