2013-06-25 4 views
1

Я новичок в весне и стараюсь добиться успеха. Я хотел бы использовать инъекцию зависимостей на основе 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 может быть полностью неправильным/ненужным. Я еще не знаю достаточно о Весне.

+0

Закрытый голос еще более странный. –

ответ

1

Вам нужно использовать плагин Struts 2 Spring, иначе Spring не имеет понятия, что он должен что-либо делать с действиями S2. Как только вы отпустите плагин S2 (используя Maven, чтобы другие зависимости приходили автоматически), вы в основном выполняете настройку прослушивателя загрузчика контекста Spring.

Вы не необходимости определить свои действия в файле конфигурации Spring, но может. Независимо от того, зависит ли вам от того, как вы выполняете проводку, например, если вы автоматически подключаетесь по имени, вы можете пропустить ее.

+0

Большое спасибо Дэйву! Я загрузил и добавил .jar в проект, и он мгновенно сработал! Для тех, кто сталкивается с этим позже, а также нуждается в банке, получите его здесь: http://mvnrepository.com/artifact/org.apache.struts/struts2-spring-plugin – user2507377

+0

@ user2507377 Я бы рекомендовал * сильно * против загрузки случайные библиотеки: используйте инструмент управления зависимостями. –