加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 具有自定义集合名称的Spring Data MongoDB存储库

发布时间:2020-12-15 01:42:38 所属栏目:大数据 来源:网络整理
导读:我正在使用Spring Data for MongoDB,我需要能够在运行时配置集合. 我的存储库定义为: @Repositorypublic interface EventDataRepository extends MongoRepository 我试过这个愚蠢的例子: @Document(collection = "${mongo.event.collection}")public class

我正在使用Spring Data for MongoDB,我需要能够在运行时配置集合.

我的存储库定义为:

@Repository
public interface EventDataRepository extends MongoRepository

我试过这个愚蠢的例子:

@Document(collection = "${mongo.event.collection}")
public class EventData implements Serializable {

但是mongo.event.collection没有像使用@Value注释那样解析为名称.

多一点调试和搜索,我尝试了以下内容:
????@Document(collection =“#{${mongo.event.collection}}”)

这产生了一个例外:

Caused by: org.springframework.expression.spel.SpelParseException: EL1041E:(pos 1): After parsing a valid expression,there is still more data in the expression: 'lcurly({)'
    at org.springframework.expression.spel.standard.InternalSpelExpressionParser.doParseExpression(InternalSpelExpressionParser.java:129)
    at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:60)
    at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:32)
    at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpressions(TemplateAwareExpressionParser.java:154)
    at org.springframework.expression.common.TemplateAwareExpressionParser.parseTemplate(TemplateAwareExpressionParser.java:85)

也许我只是不知道如何使用SPel来访问Spring的Property Configurer中的值.

单步执行代码时,我发现有一种方法可以指定集合名称甚至表达式,但是,我不确定应该将哪个注释用于此目的或如何执行.

谢谢.
-AP_

最佳答案
所以,最后,这是一个解决问题的方法.我想我真的不知道如何使用SPeL表达式从Spring Properties Configurer访问数据.

在我的@Configuration类中:

@Value("${mongo.event.collection}")
private String
    mongoEventCollectionName;

@Bean
public String mongoEventCollectionName() {
    return
        mongoEventCollectionName;
}

在我的文件上:

@Document(collection = "#{mongoEventCollectionName}")

这似乎可以正常工作并正确选取我的.properties文件中配置的名称,我仍然不确定为什么我不能像在@Value注释中那样使用$访问该值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读