我有一个场景,我需要有两个不同的单个存储库实现(一次只有一个存储库),基于数据库,存储库实现从中获取数据。
实施例:
GroupRepository extends CrudRepository <String,Group>{}
GroupSybaseRepository extends GroupRepository <String,Group>{}
GroupDB2Repository extends GroupRepository <String,Group>{}
我计划将这些存储库实现在不同的包中并使用includeFilters / excludeFilters与
的解决方案还有其他更好的方法吗?
答案 0 :(得分:0)
您可以使用弹簧配置文件。
有两个个人资料名称db2
和sysbase
,并使用@Profile
注释相应地标记您的存储库。
运行应用程序时,使用spring.profiles.active
系统属性指定要激活的配置文件。
您可以找到示例here
答案 1 :(得分:0)
您可以在单独的位置使用两个存储库,但您可以通过多种方式实现此目的(可能是:-))
但可能是: -
使用下面的不同交易经理: -
StringSource(reinterpret_cast<const byte*>(&message[0]),
message.size(),
true,
new HashFilter(hmac, new StringSink(mac))
); // StringSource
现在,您将在您的上下文中明显拥有多个交易管理器。感谢。
您也可以使用条件存储库。对于包和事务管理器Bean以及其他相关bean,可能是不同的配置(使用基于某些环境变量的@Conditional标记的@Configuration标记的类)文件
答案 2 :(得分:0)
我使用了包含/排除过滤器的组合,唯一不好的部分是我需要在需要在存储库实现之间切换时评论/取消注释特定的过滤器定义。像下面的东西
<context:component-scan base-package="com.concretepage">
<context:include-filter type="regex" expression="com.concretepage.*.*Util"/>
<context:exclude-filter type="assignable" expression="com.concretepage.service.IUserService"/>
</context:component-scan>