Http inboundGateway缓存jpa结果
Http inboundGateway caching jpa result
如何缓存处理程序的 Jpa 结果?我尝试搜索一些类似的场景,但我找不到如何在 DSL 中执行此操作。下面是我的示例代码..
@Bean
public IntegrationFlow findProducts() {
return IntegrationFlows
.from(Http.inboundGateway("app/products")
.requestMapping(m -> m.methods(HttpMethod.GET))
.errorChannel("userApp.input"))
.handle((p, h) -> productRepository.findAll())
.get();
}
您的 productRepository.findAll()
必须用 @Cacheable
标记:
* Annotation indicating that the result of invoking a method (or all methods
* in a class) can be cached.
*
* <p>Each time an advised method is invoked, caching behavior will be applied,
* checking whether the method has been already invoked for the given arguments.
* A sensible default simply uses the method parameters to compute the key, but
* a SpEL expression can be provided via the {@link #key} attribute, or a custom
* {@link org.springframework.cache.interceptor.KeyGenerator} implementation can
* replace the default one (see {@link #keyGenerator}).
*
* <p>If no value is found in the cache for the computed key, the target method
* will be invoked and the returned value stored in the associated cache. Note
* that Java8's {@code Optional} return types are automatically handled and its
* content is stored in the cache if present.
*
* <p>This annotation may be used as a <em>meta-annotation</em> to create custom
* <em>composed annotations</em> with attribute overrides.
*
* @author Costin Leau
* @author Phillip Webb
* @author Stephane Nicoll
* @author Sam Brannen
* @since 3.1
* @see CacheConfig
*/
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Cacheable {
在 reference manual 中查看更多信息:
For caching declaration, Spring’s caching abstraction provides a set of Java annotations:
如何缓存处理程序的 Jpa 结果?我尝试搜索一些类似的场景,但我找不到如何在 DSL 中执行此操作。下面是我的示例代码..
@Bean
public IntegrationFlow findProducts() {
return IntegrationFlows
.from(Http.inboundGateway("app/products")
.requestMapping(m -> m.methods(HttpMethod.GET))
.errorChannel("userApp.input"))
.handle((p, h) -> productRepository.findAll())
.get();
}
您的 productRepository.findAll()
必须用 @Cacheable
标记:
* Annotation indicating that the result of invoking a method (or all methods
* in a class) can be cached.
*
* <p>Each time an advised method is invoked, caching behavior will be applied,
* checking whether the method has been already invoked for the given arguments.
* A sensible default simply uses the method parameters to compute the key, but
* a SpEL expression can be provided via the {@link #key} attribute, or a custom
* {@link org.springframework.cache.interceptor.KeyGenerator} implementation can
* replace the default one (see {@link #keyGenerator}).
*
* <p>If no value is found in the cache for the computed key, the target method
* will be invoked and the returned value stored in the associated cache. Note
* that Java8's {@code Optional} return types are automatically handled and its
* content is stored in the cache if present.
*
* <p>This annotation may be used as a <em>meta-annotation</em> to create custom
* <em>composed annotations</em> with attribute overrides.
*
* @author Costin Leau
* @author Phillip Webb
* @author Stephane Nicoll
* @author Sam Brannen
* @since 3.1
* @see CacheConfig
*/
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Cacheable {
在 reference manual 中查看更多信息:
For caching declaration, Spring’s caching abstraction provides a set of Java annotations: