我正在开发一个使用spring-framework(v3.2.1)的项目,但由于我是春天做事的新手,我现在遇到了以下问题....它会是如果有人能指出我正确的方向,那就太棒了:
我正在尝试在运行时创建Job类的实例。 Job类本身使用Job类中@Autowired的一些服务。由于自动装配仅适用于受弹簧容器控制的物体......我首先想到的是:
@Component
@Scope("prototype")
class Job{
@Autowired
MyService service
String name
String group
.
.
.
public Job(){
}
public Job(String name, String group){
this.name = name;
this.group = group;
}
public void start(){
//some code, use of service etc.
}
}
现在,我可以通过调用context.getBean("job")
来使用应用程序上下文来获取新作业。通过调用默认构造函数创建新的作业实例,因此我必须在获取新的Job实例后设置名称和组参数:
Job j = context.getBean("job");
j.setName("Test");
j.setGroup("someGroup");
j.start()
我目前正试图弄清楚是否有某种方法可以指定在运行时创建作业实例的参数。这样我就可以用不同的状态实例化作业类的新对象。
正如我上面提到的,我现在被困在这里,并且由于我缺乏春天的经验,我很难找到实现这一目标的最佳方法。也许有一些普遍接受的方式或模式来做这些事情。如果有更多弹簧经验的人能指出我正确的方向,那就太棒了。
非常感谢!
答案 0 :(得分:1)
这是您需要的(http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html#getBean(java.lang.String,java.lang.Object ...)方法。
答案 1 :(得分:1)
BeanFactory getBean(String name,Object [] args)
您可以使用它来传递参数数组