【发布时间】:2013-03-13 15:10:09
【问题描述】:
我正在开发一个使用 spring-framework (v3.2.1) 的项目,但由于我不熟悉 spring 的做事方式,我目前遇到以下问题....如果有人能指出我正确的方向,那就太好了:
我正在尝试在运行时创建 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 j = context.getBean("job");
j.setName("Test");
j.setGroup("someGroup");
j.start()
我目前正在尝试确定是否有某种方法可以指定在运行时创建作业实例的参数。这样我就可以实例化具有不同状态的作业类的新对象。
正如我上面提到的,我目前被困在这里,由于我缺乏对 spring 的经验,我很难找出实现这一目标的最佳方法。也许有一些普遍接受的方式或模式来做这些事情。如果有更多春季经验的人可以为我指明正确的方向,那就太好了。
非常感谢!
【问题讨论】:
-
@Compoent(value="job") 会更好。
标签: spring object runtime instantiation