我们正在使用eclipse,spring,ddd和存储库模式开发应用程序 我们当前的场景由以下插件组成
我们在Plug-in Domain.project中创建了Service.class,它通过注入调用,这是在Plug-in Repository.project上实现的Repository的一个实现。但注射没有得到妥善解决。
非常感谢, 亲切的问候,
答案 0 :(得分:0)
正如您所说,存储库接口位于域项目中。 我们已经为域项目中包含的接口的每个实现创建了一个项目。 例如,我们已经为JBDCRepository的实现创建了一个项目,另一个用于PureQueryRepository,另一个用于JsonRepository,依此类推。 因此,存储库项目实现具有域项目的依赖关系(“请参阅”),但域项目与存储库项目实现没有任何依赖关系。 所以,当我们想通过Spring选择/注入任何这些存储库时,我们的问题发生了,因为域项目没有看到任何存储库项目实现我们得到ClassNoFoundException
亲切的问候, BraisCidrás。
答案 1 :(得分:0)
域名不应该关心它使用哪种实现 - 这就是为什么首先将存储库接口与存储库实现分开的原因。
为了决定使用哪种实现,请考虑实现选择的动态性:
决定服务器启动时 - >使用例如Spring Profiles:使用名为" jdbc"的配置文件,另一个名为" json"等等,并在启动应用程序时激活所需的配置文件。这样,只会实例化和注入指定配置文件的存储库实现。
决定课程级别 - >使用例如Spring Qualifiers 如果一个Spring bean需要" jdbc"您的存储库的实现,而另一个需要" json"实现相同的存储库,然后使用相应的限定符名称实例化每个实现,并通过指定其限定符来注入所需的存储库实现。