gpt4 book ai didi

java - Spring 3 : disable SpEL evaluation of a bean property value?

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:08 25 4
gpt4 key购买 nike

我们正在将我们的应用程序从 Spring 2.5 更新到 3.0,但我们遇到了 bean 属性的新 SpEL 评估问题。

我们一直在一个模块中使用内部模板语法,不幸的是它使用了与 SpEL 相同的“#{xyz}”标记。我们有一些 bean 将包含这些表达式的字符串作为属性,但 spring 假定它们是 SpEL 表达式,并在尝试实例化 bean 时抛出 SpelEvaluationException。

例如

<bean id="templatingEngine" class="com.foo.TemplatingEngine">
<property name="barTemplate" value="user=#{uid}&country=#{cty}"/>
</bean>

是否可以禁用 SpEL 评估,最好是针对每个 bean,但也可以针对整个应用程序上下文?

或者有没有办法转义这些值?

谢谢,斯蒂芬

最佳答案

通过调用 bean 工厂完全禁用 SpEL 评估 setBeanExpressionResolver方法传入 null。您可以定义一个 BeanFactoryPostProcessor 来执行此操作。

public class DisableSpel implements BeanFactoryPostProcessor {
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory)
throws BeansException
{
beanFactory.setBeanExpressionResolver(null);
}
}

然后在应用程序上下文中定义这个 bean。

<bean class="com.example.spel.DisableSpel"/>

关于java - Spring 3 : disable SpEL evaluation of a bean property value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4463576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com