我有一个非常简单的问题。但我找不到我错在哪里。我使用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;}}
答案 0 :(得分:1)
据我所知,Spring 2.0.2不支持以这种方式自动装配bean的映射。您可以改为使用ApplicationContextAware
和getBeansOfType()
:
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来实现此目的