我有一个春豆,我想在其中可选。
我试过这样的方法:
<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。
我看到这个异常运行在上面:
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)发布于 2014-11-02 14:36:13
正如@bohuslav-burghardt所提到的,您需要引用占位符。
但是,您必须而不是引用空.
value="#{!''.equals('${foo}') ? '${foo}' : null}"...worked对我来说很好。
编辑:
要回答以下注释中的问题,需要在占位符配置上将ignore-unresolvable设置为true,并测试未解决的占位符:
<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被注入。
https://stackoverflow.com/questions/26697920
复制相似问题