我是spring集成和缓存新手,想知道如何将从出站网关接收到的对象添加到缓存中。无法确定所需的配置。
从以下配置,我从rest api收到的对象正在被记录:
INFO:com.domain.IpAddress@74589991
我计划使用ehcache/caffiene,任何提示都会有帮助。
<int:channel id="requestChannel"/>
<int:channel id="outboundChannel"/>
<int:channel id="replyChannel"/>
<int:channel id="autoCompleteJsonResponseChannel"/>
<int:gateway id="restResponseService" default-request-channel="requestChannel" service-interface="com.domain.service.RestResponseService" />
<int-http:outbound-gateway id="out" request-channel="requestChannel"
http-method="GET"
url="https://api.ipify.org/?format=json"
expected-response-type="java.lang.String"
reply-channel="autoCompleteJsonResponseChannel"
/>
<int:json-to-object-transformer
input-channel="autoCompleteJsonResponseChannel"
type="com.domain.IpAddress"
output-channel="outboundChannel" />
<int:logging-channel-adapter id="outboundChannel" level="INFO"/>
编辑2:
现在,我按照建议更改了出站网关:
<int-http:outbound-gateway id="out" request-channel="requestChannel"
http-method="GET"
url="https://api.ipify.org/?format=json"
expected-response-type="java.lang.String"
reply-channel="autoCompleteJsonResponseChannel">
<int-http:request-handler-advice-chain>
<cache:advice>
<cache:caching cache="myCache">
<cache:cacheable method="getCurrentIpAddress" />
</cache:caching>
</cache:advice>
</int-http:request-handler-advice-chain>
</int-http:outbound-gateway>
并将ehache配置定义如下:
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" >
<property name="cacheManager" ref="ehcache" />
</bean>
<!-- Ehcache library setup -->
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" >
<property name="configLocation" value="classpath:ehcache.xml" />
<property name="shared" value="true"/>
</bean>
在我的服务类中,定义了可缓存的方法:
package com.domain.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import com.domain.IpAddress;
import com.domain.RestResponse;
@Service("restResponseService")
public class RestResponseServiceImpl implements RestResponseService{
@Autowired
private IpAddress ipAddress;
@Cacheable("myCache")
public IpAddress getCurrentIpAddress(String name) {
// TODO Auto-generated method stub
return ipAddress;
}
@CacheEvict(value = "myCache", allEntries = true)
public void refreshAllResults() {
// TODO Auto-generated method stub
}
}
但缓存仍然不起作用。我错过了什么。
您可以在网关中执行以下操作:
<int-http:outbound-gateway>
<int-http:request-handler-advice-chain>
<cache:advice>
<cache:caching cache="foo">
<cache:cacheable method="handle*Message" key="#a0.payload"/>
</cache:caching>
</cache:advice>
</int-http:request-handler-advice-chain>
</int-http:outbound-gateway>
换句话说,因为Spring中的缓存完全基于AOP,所以要弄清楚请求-处理程序-建议-链
可以使用任何建议
实现并不复杂。在这种情况下,我们制作
Spring提供了特殊的类DelegatingVariableResolver,以无缝方式将JSF和Spring集成在一起。 在JSF中集成Spring依赖注入(IOC)功能需要以下步骤。 第1步:添加DelegatingVariableResolver 在faces-config.xml中添加一个variable-resolver条目,指向spring类DelegatingVariableRes
我创建了一个新示例,并将代码分为客户端和服务器端。 完整的代码可以在这里找到。 服务器端有3个版本。 服务器无Spring Boot应用程序,使用Spring Integration RSocket InboundGateway 服务器引导重用Spring RSocket autconfiguration,并通过serverrsocketmessagehandler创建ServerRSocketC
问题内容: 我想使用Spring Batch和Spring Integration从数据库导入数据,并将它们写入文件,然后通过ftp将其传输到远程服务器。 但是我想我的问题是我不想为我的表创建域对象。我的查询是随机的,我想要一些可以读取数据并将其写入文件并进行传输的东西。 是否可以在不创建各自的域对象的情况下使用Spring Batch和Integration? 问题答案: 绝对。您可以将JDBC
主要内容:AspectJ Jar 包下载我们知道,Spring AOP 是一个简化版的 AOP 实现,并没有提供完整版的 AOP 功能。通常情况下,Spring AOP 是能够满足我们日常开发过程中的大多数场景的,但在某些情况下,我们可能需要使用 Spring AOP 范围外的某些 AOP 功能。 例如 Spring AOP 仅支持执行公共(public)非静态方法的调用作为连接点,如果我们需要向受保护的(protected)或私有的(
我正在尝试从JMS队列(使用ActiveMQ)读取消息。我面临的问题是,消息正在从队列中读取,但没有显示在“服务激活器”中。 非常感谢您的帮助。 我的代码如下: (1) Spring配置 (2) 服务激活器MDP: (3) 申请开始课程: 谢谢
我无法解决这个问题,现在已经坚持了很长时间。我是一个spring-integration-dsl的初学者,任何帮助都将非常感谢。