- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 spring SpEL 来解析在 UDP 中收到的消息。
为了理解如何使用 Spring SpEL,我写了这个:
上下文.xml:
<bean id="message" class="springsimulator.Message">
<property name="strMessage" value="$TEST,11,22,33"/>
</bean>
<bean id="nmeamessage" class="springsimulator.NMEAMessage">
<property name="fields" value="#{message.strMessage.split(',')}"/>
</bean>
<bean id="parser" class="springsimulator.SPELParser">
<property name="values">
<map>
<entry key="val1" value="#{nmeamessage.fields[1]}"/>
<entry key="val2" value="#{nmeamessage.fields[2]}"/>
</map>
</property>
</bean>
消息.java:
public class Message {
public String strMessage;
public void setStrMessage(String strMessage) {
this.strMessage = strMessage;
}
}
NMEAMessage:
public class NMEAMessage {
public String[] fields;
public void setFields(String[] fields) {
this.fields = fields;
}
}
解析器:
public class Parser {
Map<String,String> values;
public void setValues(Map<String, String> values) {
this.values = values;
}
public String toString() {
String message = "";
for (Entry<String, String> entry : values.entrySet()) {
message += entry.getKey() + ":" + entry.getValue() + "\n";
}
return message;
}
}
主要内容:
ExpressionParser parser = new SpelExpressionParser();
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("context.xml");
Parser myparser = (Parser) context.getBean("parser");
System.out.println(myparser);
这有效,我已经解析了我的消息。
但是现在,我想在每次收到消息时循环计算 SpEL 表达式
while(running) {
socket.receive(message)
//Split message to get fields
//set fields into a map
}
是否有使用 SpEL 和 context.xml 执行此操作的正确方法?
谢谢
最佳答案
要在运行时解析 SpEL 表达式,请执行以下操作:
// Setup the SpEL parser: do this once
SpelParserConfiguration spelParserConfiguration = new SpelParserConfiguration(SpelCompilerMode.IMMEDIATE, getClass().getClassLoader());
ExpressionParser expressionParser = new SpelExpressionParser(spelParserConfiguration);
StandardEvaluationContext evaluationContext = new StandardEvaluationContext();
// Parse (compile) the expression: try to do this once
Expression expression = expressionParser.parseExpression(unevaluatedExpression)
// Then within the loop ...
// Supply context, like the value of your namespace
evaluationContext.setVariable(variableName, value);
// Evaluate an expression as many times as you like
Object result = expression.getValue(evaluationContext);
关于java - Spring SpEL - 如何使用 SpEL 解析消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30306502/
我正在尝试使用 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
我是一名优秀的程序员,十分优秀!