【问题标题】:Is it possible to Autowire the JDO PersistenceManager or only the PersistenceManagerFactory?是否可以自动装配 JDO PersistenceManager 或仅自动装配 PersistenceManagerFactory?
【发布时间】:2010-09-18 11:05:05
【问题描述】:

可以Autowire JDO PersistenceManager吗?

在下面的例子中,只有PersistenceManagerFactoryAutowired,而PersistenceManager是在每次操作之前使用getter和utility方法获得的。

import org.springframework.orm.jdo.PersistenceManagerFactoryUtils;

@Service
public class MainServiceImpl implements MainService
{

    @Autowired
    private PersistenceManagerFactory pmf;

    private PersistenceManager pm;

    public void setPersistenceManager(PersistenceManager pm)
    {
        this.pm = pm;
    }

    public void setPmf(PersistenceManagerFactory pmf)
    {
        this.pmf = pmf;
    }

    public PersistenceManagerFactory getPmf()
    {
        return pmf;
    }

    public PersistenceManager getPersistenceManager()
    {
        return PersistenceManagerFactoryUtils.getPersistenceManager(pmf, true);
    }

}

【问题讨论】:

    标签: java spring dependency-injection spring-mvc jdo


    【解决方案1】:

    看起来不太可能。

    如果您查看Spring JDO classes overview,您会发现没有返回 PersistenceManager 的 FactoryBean。

    当然,您可以轻松地 implement a factory bean yourself 具有 PersistenceManagerFactory 类型的依赖项并返回 PersistenceManager。

    如果您总是想自动装配当前线程绑定的 PersistenceManager,您可能希望在内部使用 TransactionAwarePersistenceManagerFactoryProxy(这里是 JavaDoc 的摘录)

    目标 JDO 的代理 PersistenceManagerFactory,返回 当前线程绑定 PersistenceManager(Spring 管理的 事务性 PersistenceManager 或 单人 OpenPersistenceManagerInView PersistenceManager) 开启 getPersistenceManager(),如果有的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-15
      • 2018-07-05
      • 2012-02-09
      • 2018-10-12
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多