Eclipse,Spring,DDD和存储库模式

时间:2017-03-16 13:53:30

标签: spring eclipse domain-driven-design repository-pattern

我们正在使用eclipse,spring,ddd和存储库模式开发应用程序 我们当前的场景由以下插件组成

  1. 插件Domain.project:包含Repository.class接口。
  2. Plug-in Repository.project:包含Repository.class接口的不同实现,例如ExampleRepositoryImpl.class。所以这个插件的依赖项上有Domain.project插件。
  3. 我们在Plug-in Domain.project中创建了Service.class,它通过注入调用,这是在Plug-in Repository.project上实现的Repository的一个实现。但注射没有得到妥善解决。

    1. 我们无法从Domain.project向Repository.project添加依赖性,因为这会引发冗余循环错误。
    2. 此外,由于我们遵循DDD方法,Domain.project可以看到其余的但相反。
    3. 非常感谢, 亲切的问候,

      Eclipse, Spring, DDD and the repository pattern

2 个答案:

答案 0 :(得分:0)

正如您所说,存储库接口位于域项目中。 我们已经为域项目中包含的接口的每个实现创建了一个项目。 例如,我们已经为JBDCRepository的实现创建了一个项目,另一个用于PureQueryRepository,另一个用于JsonRepository,依此类推。 因此,存储库项目实现具有域项目的依赖关系(“请参阅”),但域项目与存储库项目实现没有任何依赖关系。 所以,当我们想通过Spring选择/注入任何这些存储库时,我们的问题发生了,因为域项目没有看到任何存储库项目实现我们得到ClassNoFoundException

亲切的问候,               BraisCidrás。

答案 1 :(得分:0)

域名不应该关心它使用哪种实现 - 这就是为什么首先将存储库接口与存储库实现分开的原因。

为了决定使用哪种实现,请考虑实现选择的动态性:

  • 决定服务器启动时 - >使用例如Spring Profiles:使用名为" jdbc"的配置文件,另一个名为" json"等等,并在启动应用程序时激活所需的配置文件。这样,只会实例化和注入指定配置文件的存储库实现。

  • 决定课程级别 - >使用例如Spring Qualifiers 如果一个Spring bean需要" jdbc"您的存储库的实现,而另一个需要" json"实现相同的存储库,然后使用相应的限定符名称实例化每个实现,并通过指定其限定符来注入所需的存储库实现。