2012-05-18 2 views
0

Я использую Spring Roo и хочу получить доступ к компоненту внутри класса контроллера, который имеет следующую конфигурацию в applicationContext.xml:Autowired не работает, как ожидалось

<bean class="com.reservation.jobs.Configuration" id="jobsConfiguration" autowire="byType"> 
<property name="skipWeeks" value="4" /> 
</bean> 

Сам класс конфигурации является:

package com.reservation.jobs; 

public class Configuration { 
private int skipWeeks; 

public void setSkipWeeks(int value) { 
    System.out.println("SkipWeeks set auf: " + value); 
    this.skipWeeks = value; 
} 
public int getSkipWeeks() { 
    return this.skipWeeks; 
} 
} 

В моем контроллере я думал, что простые Autowired аннотации должны сделать работу

public class SomeController extends Controller { 
@Autowired 
private com.reservation.jobs.Configuration config; 

} 

Во время запуска Spring печатает сообщение в методе setSkipWeeks. К сожалению всякий раз, когда я вызываю config.getSkipWeeks() внутри контроллера, он возвращает 0.

Нужно ли использовать метод getBean экземпляра ApplicationContext или есть лучший способ?

ответ

2

autowire="byType" является излишним. Он указывает, что поля класса Configuration должны быть автообновлены, и у вас есть только один примитив. Поэтому удалите этот атрибут.

Кроме того, config.getSkipWeeks() должен вернуться 4 если:

  • вы используете другой экземпляр (сделанный вами с new)
  • вы назвали сеттер где-то со значением 0