首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring 4 SPEL空注入

Spring 4 SPEL空注入
EN

Stack Overflow用户
提问于 2014-11-02 09:37:15
回答 1查看 1.6K关注 0票数 0

我有一个春豆,我想在其中可选。

我试过这样的方法:

代码语言:javascript
复制
    <bean id="springSqlSessionConfigBasedFactory" class="org.mybatis.spring.SqlSessionFactoryBean" lazy-init="true">
    <property name="dataSource" ref="infraDataSource" />
    <property name="configLocation" value="#{ (!''.eqauls(${myBatis.configLocation})) ? ${myBatis.configLocation} : 'null' }" />
</bean>

因此-如果属性(由属性配置器加载)存在,则应该注入该值,如果不存在,则应该注入null。

我看到这个异常运行在上面:

代码语言:javascript
复制
Caused by: java.lang.NullPointerException
at org.springframework.expression.spel.ast.SpelNodeImpl.<init>(SpelNodeImpl.java:54)
at org.springframework.expression.spel.ast.Ternary.<init>(Ternary.java:36)
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.eatExpression(InternalSpelExpressionParser.java:136)
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.doParseExpression(InternalSpelExpressionParser.java:85)
at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:56)
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)
at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:73)
at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:123)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-02 14:36:13

正如@bohuslav-burghardt所提到的,您需要引用占位符。

但是,您必须而不是引用空.

代码语言:javascript
复制
value="#{!''.equals('${foo}') ? '${foo}' : null}"

...worked对我来说很好。

编辑:

要回答以下注释中的问题,需要在占位符配置上将ignore-unresolvable设置为true,并测试未解决的占位符:

代码语言:javascript
复制
<context:property-placeholder properties-ref="props" ignore-unresolvable="true"/>

<bean class="org.springframework.integration.samples.amqp.Foo">
  <property name="foo"
   value="#{(!''.equals('${foo}') AND !'${foo}'.contains('{foo}')) ? '${foo}' : null}" />
</bean>

注意,它使用contains并省略$,以避免替换该参数;否则,一个好的替换将失败,并导致null被注入。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26697920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档