- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很高兴在 XML 文件中使用 SpEL 来配置 Spring Beans。
但是,我想缩短这样的表达式:
<constructor-arg value = "#{ T(org.apache.commons.io.IOUtils).toString ( new java.io.FileReader ( './test.dat' ) ) }" />
有没有办法静态导入像org.apache.commons.io.IOUtils.toString()
这样的方法(或者至少是 IOUtils
类),这在 Java 中是可能的吗?这在常规 XML 值中也可能吗(例如,在 <bean class = "..." >
中)?
更新
Artem's answer下面是一个很好的方法,特别是定义实例化实用程序类的新 bean 的方法。也许值得强调的是,即使 IOUtils 有私有(private)构造函数,Spring 也允许您这样做。
最佳答案
该功能名为 SpEL-function :
public class SpELFunctionBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
beanFactory.setBeanExpressionResolver(new StandardBeanExpressionResolver() {
@Override
protected void customizeEvaluationContext(StandardEvaluationContext evalContext) {
evalContext.registerFunction("ioToString",
IOUtils.class.getDeclaredMethod("toString", new Class[] { FileReader.class }));
}
});
}
}
并将其注册为上下文中的 bean。
最后你的表情会是这样的:
"#{ #ioToString( new java.io.FileReader ( './test.dat' ) ) }"
更新
另一个解决方案就像具有这些实用方法的普通 bean:
<bean id="myUtility" class="...">
...
"#{ myUtility.toString('./test.dat') }"
并执行该类中已有的所有硬逻辑。
关于java - 导入要在 Spring XML 和 SpEL 中使用的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634676/
我正在尝试使用 spring SpEL 来解析在 UDP 中收到的消息。 为了理解如何使用 Spring SpEL,我写了这个: 上下文.xml:
我想将 xml 文件中分配的属性值传递给 Java 中的 Spring 表达式(SpEL)。你能指出我如何实现这一目标吗?为了清楚起见,我提供了以下示例。 example.xml 文件:
我正在尝试将 spring 版本从 3.0.5 升级到 3.2.11。 当表达式比较空值时,我遇到了 SpEL 的麻烦,如下所示: new SpelExpressionParser().parseEx
例如,我在 Spring boot 的 application.yml 中有一个属性。 some: strNumber: "5" 我想以此属性的某些其他属性的值(value)为基础。例如 some
我试图从属性中获取一个字符串,对其运行操作,然后将其存储为带有 @Value 注释的变量。不幸的是,当我使用 SpEL 所需的 #{'${variable}'} 语法时,字符串发生了变化。如果我有两个
在我的应用程序中,我有一些带有多个 SpEL 表达式的对象,这些表达式通常包含带有 boolean 返回类型以调用和逻辑运算符的方法签名。在缓存这些对象之前,我通过简单地执行已解析的表达式来检查表达式
我正在尝试在 Spring 集成流程中构建一个 url,如下所示: 但是我不断收到以下错误: SpelParseException: EL1041E:(pos 9): After parsing a
我想根据某些条件导入不同的资源文件。这可能吗? 这些不起作用: 最佳答案 支持 SpEL,但 Spring 很早就解析了 import 语句。 spring 在解析 import 语句时,属性占位
我有一个类的方法:代码: List getData() {...} 和一些扩展实体的类:项目、阶段、发票、付款。 我想做这样的事情: @PostFilter("filterObject instans
我正在尝试计算以下 SpEL 表达式(Spring 表达式版本 3.1.1): T(com.google.common.collect.Lists).newArrayList(#iterable) #
作为我项目的一部分,我正在实现一个基于 SpEL 的规则引擎,我正在努力使其尽可能高效。基本上,该引擎由 SpEL 语法中的持久条件组成。当需要评估输入时,我会在数据库中查询相关规则 - SpEL 表
就 Spring 3.0 中使用的 SpEL 而言, 我想问一下,是否可以执行以下操作(在 bean 定义 .xml 中): 东西。就像在jSTL中一样。
我是法国人,所以我放了一些 é è ê ô û 在我的代码中。 (而且我的英语说得不是很好)。 我在类 Formulaires 中有一个类似的方法: public static Formulair
我发现一篇文章Open source library with vulnerabilities . 这篇文章指出“Spring 表达式语言 (SpEL) 可以通过 HTTP 参数提交来利用,从而允许攻
我遇到了一个问题,我尝试监听EnvironmentChangeEvent并重新初始化一些配置。 虽然我发现 SpEL 的 @Value 注释不起作用,但普通的 @Value 注释就可以了: @Comp
给定 java.util.Date() ,如何使用 Spring 表达式语言创建 Calendar 对象? 这个有效: 但我需要从 java.util.Date() 向其构造函数提供日、月和年。我有
是否有某个地方有带有 Spring 表达式语言 shell 的 swing 控制台? 最佳答案 据我所知,没有控制台或命令行评估器,但我建议您下载 org.springframework.expres
我想在 application.properties 中计算我的端口号,如下所示: server.port=#{ 1 + ${myapp.web.server.port.ssl} } myapp.we
我要评估 "user.name" 但是 user 可能为 null,这当然会导致 NPE 有没有办法说仅在 user 不为 null 时才尝试获取名称?否则返回 null。 我读过有关 Elvis 语
我需要知道 Spring SpEL 在语法和功能方面是否有限制。例如我需要运行这个表达式: Integer cnt=0; if(obj.val1<10){return 1;} else{ cnt=cn
我是一名优秀的程序员,十分优秀!