是否可以自动装载JDO PersistenceManager或仅使用PersistenceManagerFactory?

时间:2010-09-18 11:05:06

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

是否可以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);
    }

}

1 个答案:

答案 0 :(得分:0)

看起来不太可能。

如果查看Spring JDO classes overview,您将看到没有返回PersistenceManager的FactoryBean。

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

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

  

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