我是否可以将Cayenne配置为使用提供商获取模型的新实例



我想通过Guice向新的Cayenne数据对象提供构造函数参数,但看起来Cayenne只是使用class.newInstance((来实例化新实例。是否有任何方法可以让Cayenne使用提供商来获取新实例?例如,在获取过程中实例化新实例时,而不仅仅是在创建新实例时。

为了稍微扩展一下,我有一个Maven项目,它包含了所有Cayenne车型和核心业务逻辑。然后我有另一个带有API实现的Maven项目。我希望能够在API项目中配置参数,并让模型在运行时使用这些参数。

因此,可以使用构造函数注入或provides方法来实现这一点——两者都可以。

有办法做到这一点吗?

public class Foo extends _Foo { //_Foo extends CayenneDataObject
private final String hey; 
public Job(@Inject @Named("foo-job") String hey) {
super();
this.hey = hey;
}
}

Cayenne持久对象不通过依赖项注入(DI(进行管理。DI适用于数量相对较少的服务,而不适用于潜在的大量持久对象。

将一些值传递给对象的一种更惯用的方法是通过Cayenne回调和侦听器。回调可以在Modeler中映射,并且不能在对象之外对应用程序有任何引用。因此,对于您的案例,监听器可以是一个解决方案。它们可以在Guice中进行DI管理和映射。

最新更新