【问题标题】:Initialize already created objects in Spring在 Spring 中初始化已经创建的对象
【发布时间】:2011-04-24 02:36:14
【问题描述】:

我很感兴趣,有什么方法可以用已经创建的对象初始化依赖项?

假设我有以下课程:

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。有什么办法吗?

【问题讨论】:

    标签: java spring


    【解决方案1】:
    applicationContext.getAutowireCapableBeanFactory().autowireBean(p);
    

    替代方法 autowire 和 autowireBeanProperties

    请记住,它只会设置 bean 属性,因此没有 AOP 东西,如拦截器、事务等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      • 2020-12-25
      相关资源
      最近更新 更多