自动装配不按预期工作

时间:2012-05-18 21:45:28

标签: spring autowired

我正在使用Spring Roo,并希望访问Controller类中的bean,该类在applicationContext.xml中具有以下配置:

<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。

我是否要使用ApplicationContext实例的getBean方法,还是有更好的方法?

1 个答案:

答案 0 :(得分:2)

autowire="byType"是多余的。它表示Configuration类的字段应该是自动装配的,并且您只有一个基元。所以删除该属性。

除此之外,config.getSkipWeeks()必须返回4,除非:

  • 您正在使用其他实例(由new生成)
  • 你已经在某处调用了一个值为0
  • 的setter