如何自动装配地图

时间:2011-12-13 12:02:21

标签: java spring

我有一个非常简单的问题。但我找不到我错在哪里。我使用spring 2.0.2。 我想使用Autowire设置Map myTasks的属性,但结果是myTasks = null。

我的代码: 在文件弹簧中:

<bean id="Service" class="Service" autowire="byType"/> 
<bean id="FirstTask" class="FirstTask"/>
<bean id="SecondTask" class="SecondTask"/>

其中FirstTask,SecondTask扩展了MyTask

Service.class

class Service{
  private Map<String, MyTask> myTasks;
  public Map<String, MyTask> getMyTasks(){return myTasks;}
  public void MyTasks(Map<String, MyTask> myTasks){this.myTasks = myTasks;}}

2 个答案:

答案 0 :(得分:1)

据我所知,Spring 2.0.2不支持以这种方式自动装配bean的映射。您可以改为使用ApplicationContextAwaregetBeansOfType()

public class Service implements ApplicationContextAware {
    public void setApplicationContext(ApplicationContext ctx) {
        myTasks = (Map<String, MyTask>) ctx.getBeansOfType(MyTask.class);
    }
    ...
}

答案 1 :(得分:0)

如何在Spring配置文件中声明myTasks?如果您不确定,可以使用use util:map来实现此目的

参考http://static.springsource.org/spring/docs/2.0.2/reference/xsd-config.html#xsd-config-body-schemas-util-map