【发布时间】:2015-06-18 07:12:46
【问题描述】:
我正在使用 Spring Data for MongoDB,我需要能够在运行时配置集合。
我的仓库定义为:
@Repository
public interface EventDataRepository extends MongoRepository<EventData, String> {
}
我尝试了这个愚蠢的例子:
@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 的属性配置器中的值。
在单步执行代码时,我看到有一种方法可以指定集合名称甚至表达式,但是,我不确定应该为此目的使用哪个注释或如何做到这一点。
谢谢。 -AP_
【问题讨论】:
-
也许这是你的问题? jira.spring.io/browse/DATAMONGO-1043
...你用的是哪个版本的spring-data-mongodb? -
可能是(我使用的是 1.7.0-RELEASE),但是,您提到的问题涉及多个调用之间的查询中的表达式。但是,您确实提示我它必须是正确的 SPEL 表达式,所以我更改了它。查看更新的问题。
标签: java spring mongodb repository