3

我正在开发一个使用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()

我目前正在尝试确定是否有某种方法可以指定将在运行时创建作业实例的参数。这样我就可以实例化具有不同状态的作业类的新对象。

正如我上面提到的,我目前被困在这里并且由于我缺乏春季经验,我很难找出实现这一目标的最佳方法。也许有一些普遍接受的方式或模式来做这些事情。如果有更多春季经验的人能指出我正确的方向,那就太好了。

非常感谢!

4

2 回答 2

1

这是(http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html#getBean(java.lang.String , java.lang.Object.. .) 你需要的方法。

于 2013-03-13T15:44:05.497 回答
1

BeanFactory getBean(String name, Object[] args)

您可以使用它来传递参数数组

于 2013-03-13T15:50:29.543 回答