在Spring中初始化已创建的对象

时间:2011-04-24 02:36:15

标签: java spring

我很感兴趣有没有办法用依赖已经创建的对象进行初始化?

假设我有以下课程:

class MyPage {

  @Autowired LogStorage storage;
  private String applicationId;
  private Date date;

  public MyPage(String applicationId, Date date) {
    this.applicationId = applicationId;
    this.date = date;
  }

  public String render() {
    Collection<Entry> entries = storage.getEntries(applicationId, date);
    // render entries into HTML for example
  }
}

我想将对象创建分为两个阶段。首先,使用用户提供的数据创建对象(在此示例中为applicationIddate),第二个是使用Spring DI容器依赖项初始化对象。所以我需要某种初始化已经创建的对象。我认为客户端代码看起来像这样:

MyPage p = new MyPage(applicationId, date);
beanFactory.initDependencies(p);

String html = p.render();

客户端不知道(在我的情况下不应该)Page对象所需的所有依赖项,因此我无法显式提供依赖项。但是我引用了BeanFactory对象,可以将此任务委托给Spring。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

applicationContext.getAutowireCapableBeanFactory().autowireBean(p);

替代方法autowire和autowireBeanProperties

请记住,它只会设置bean属性,因此不会有拦截器,事务等AOP。