Java 如何自动关联地图
我有一个很简单的问题。但我不知道我错在哪里。我使用Spring2.0.2。 我想使用Autowire设置Map myTasks的属性,但结果是myTasks=null 我的代码: 在spring文件中:Java 如何自动关联地图,java,spring,Java,Spring,我有一个很简单的问题。但我不知道我错在哪里。我使用Spring2.0.2。 我想使用Autowire设置Map myTasks的属性,但结果是myTasks=null 我的代码: 在spring文件中: <bean id="Service" class="Service" autowire="byType"/> <bean id="FirstTask" class="FirstTask"/> <bean id="SecondTask" class="SecondT
<bean id="Service" class="Service" autowire="byType"/>
<bean id="FirstTask" class="FirstTask"/>
<bean id="SecondTask" class="SecondTask"/>
其中FirstTask、SecondTask扩展了MyTask
服务类
class Service{
private Map<String, MyTask> myTasks;
public Map<String, MyTask> getMyTasks(){return myTasks;}
public void MyTasks(Map<String, MyTask> myTasks){this.myTasks = myTasks;}}
类服务{
私有映射任务;
公共映射getMyTasks(){return myTasks;}
public void MyTasks(Map MyTasks){this.MyTasks=MyTasks;}}
据我所知,Spring2.0.2不支持以这种方式自动连接bean映射。您可以使用ApplicationContextAware
和getBeansOfType()
代替:
public class Service implements ApplicationContextAware {
public void setApplicationContext(ApplicationContext ctx) {
myTasks = (Map<String, MyTask>) ctx.getBeansOfType(MyTask.class);
}
...
}
公共类服务实现ApplicationContextAware{
public void setApplicationContext(ApplicationContext ctx){
myTasks=(Map)ctx.getBeansOfType(MyTask.class);
}
...
}
据我所知,Spring2.0.2不支持以这种方式自动连接bean映射。您可以使用ApplicationContextAware
和getBeansOfType()
代替:
public class Service implements ApplicationContextAware {
public void setApplicationContext(ApplicationContext ctx) {
myTasks = (Map<String, MyTask>) ctx.getBeansOfType(MyTask.class);
}
...
}
公共类服务实现ApplicationContextAware{
public void setApplicationContext(ApplicationContext ctx){
myTasks=(Map)ctx.getBeansOfType(MyTask.class);
}
...
}
如何在Spring配置文件中声明myTasks?如果您不确定,可以使用util:map来实现这一点
请参阅如何在Spring配置文件中声明myTasks?如果您不确定,可以使用util:map来实现这一点 提及