我试图在两个不同的微服务中重用现有的 EmployeeRepository 代码(见下文),以将数据存储在两个不同的集合中(在同一数据库中)。
@Document(collection = "employee")
public interface EmployeeRepository extends MongoRepository<Employee, String>
是否可以修改@Document(collection = "employee")
接受运行时参数?例如就像是@Document(collection = ${COLLECTION_NAME})
.
您会推荐这种方法还是我应该创建一个新的存储库?
这是一个非常古老的线程,但我会在这里添加一些更好的信息,以防其他人发现这个讨论,因为事情比接受的答案声称的更灵活。
您可以使用集合名称的表达式,因为 spel 是解析集合名称的可接受方法。例如,如果您的 application.properties 文件中有一个如下所示的属性:
mongo.collection.name = my_docs
如果您在配置类中为此属性创建一个 spring bean,如下所示:
@Bean("myDocumentCollection")
public String mongoCollectionName(@Value("${mongo.collection.name}") final String collectionName) {
return collectionName
}
然后您可以将其用作持久性文档模型的集合名称,如下所示:
@Document(collection = "#{@myDocumentCollection}")
public class SomeModel {
@Id
private String id;
// other members and accessors/mutators
// omitted for brevity
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)