我的项目中的技术
Spring Boot 2
Spring Integration (XML style)
Java 8
Tomcat 9.x/Liberty 19.0.0.1
作为我的Spring集成项目(带有入站http网关的REST API,它接受XML输入并生成XML输出)的一部分,我正在编写以下组件:
POJO类的草稿(实际上,POJO将有更多的属性,但对于我们的示例,保持简短):
public class Composite {
private Boolean isError;
private Composite(CompositeBuilder compositeBuilder) {
this.isError = miCompositeBuilder.isError;
}
public boolean isError() {
return isError;
}
//Builder
public static class CompositeBuilder {
private Boolean isError;
public CompositeBuilder(Boolean isError) {
this.isError = isError;
}
public Composite build() {
return new Composite(this);
}
}
}
XML中的验证器服务激活器组件:
<!-- SERVICE ACTIVATOR FOR REQUEST VALIDATION -->
<int:service-activator ref="myService"
method="validateMYRequest"
input-channel="myGatewayRequests"
output-channel="compositesPostRequestValidation" />
XML格式的路由器组件:
<!-- ROUTER POST-REQUEST VALIDATION -->
<int:router input-channel="compositesPostRequestValidation" expression="payload.isError">
<int:mapping value="true" channel="upstreamResponses"/>
<int:mapping value="false" channel="downstreamValidatedRequests"/>
</int:router>
最后是我的问题,在这个“路由器”里,
>
问题1)SpEL表达式(payload.isError)似乎有问题,因为我在调用路由器时遇到了一个异常,如下所示:
组织。springframework。表示斯佩尔。SpelEvaluationException:EL1008E:在类型为“com”的对象上找不到属性或字段“isError”。安博。重新取样。果心模型复合“-可能不公开或无效?在org。springframework。表示斯佩尔。阿斯特。PropertyOrFieldReference。readProperty(PropertyOrFieldReference.java:217)~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE]。。。
你能告诉我如何访问复合POJO中的布尔“isError”属性吗?这是假设发送到路由器的消息是消息
看起来支付是MIComated
而不是Comated
。
在任何情况下,SpEL都使用JavaBean约定;因此isError()
是布尔属性错误
的getter。所以payload.error
应该可以工作(只要MIComrix
公开它)。或者可以使用payload.isError()
。
如果它在头中,表达式将是headers['myHeader']
。
我这里有个小问题。在触发请求时,我希望使用HMAC对整个消息进行签名,并将生成的签名添加到头中。 所以我实施了 在的 方法I无法访问实体的字符串表示形式。它总是返回一个空字符串。原因似乎是在WriterInterceptor之后执行的MessageBodyWriter。 基本上,我有以下两种情况: 在这里,do某位SuffBackPayload(有效载荷)方法不起作用,因为有效载荷总是空的。 我以
我有这个邮戳方法 我使用下面的JSON负载来提出我的帖子请求: 这将返回以下内容: “消息”:“JSON解析错误:无法反序列化超出起始\u数组标记的实例;嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化超出起始\u数组标记的实例\n位于[源:(PushbackInputStream);行:1,列:1]“,
我在Spring Boot中创建了一个JWT令牌,用于存储用户详细信息。当我使用Jwttokenutil时。getUsernameFromToken(authToken)[authToken是传递的令牌]方法我将数据集获取给Subject。类似地,我希望将包含其他用户详细信息的数据集获取到Payload。但是我不能得到它。 ======下面是我的令牌生成方法/代码:======== =======
我们正在使用Spring Cloud Stream v2。2带有Kafka和Avro(本机编码器/解码器)。我们正在尝试根据负载的条件使用基于内容的路由。据我所知,根据Spring Cloud Stream文档,基于内容的路由只能在标头上实现,因为负载到达条件时没有经过类型转换过程。因此,除非条件基于字节格式,否则它将无法按预期工作。但是,我知道,当在本机模式下使用Avro时,会跳过消息头,并且不
我正在用Spring集成编写一个过滤器。 在这个过滤器中,我检查了一组先决条件。如果不满足任何先决条件,我将需要更改消息有效载荷(甚至头),以添加用户要完成的操作集,以满足它,并通过discar通道将其返回给用户。 我可以使用服务激活器,但我认为过滤器在这种情况下更具描述性。 最干净的方法是什么? 这是一种伪代码: 谢谢
当我想从另一个位于不同文件夹(如下所示)的特性文件中调用上述公共特性文件时,它不起作用: src/test/java/feature/tests/test.feat 我尝试了以下方法: 调用读取('feature/common/common.feature'),但它不起作用。