问题标签 [spring-dsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1037 浏览

java - Camel + Groovy + Spring DSL 的奇怪行为

我有以下路线:

此路由应简单地返回 URL 中传递的值作为 id 参数。当我执行此操作时,第一个调用有效。第一次调用之后的任何内容都会返回第一次调用中传递的值。因此,如果第一次调用是 hostname/convert/999,则任何其他调用都将返回 999,无论 URL 中传递了什么 id。看起来 groovy 正在做一些我不理解的有状态的事情。

有什么想法吗?

JavaScript 似乎也发生了同样的事情。

0 投票
4 回答
4292 浏览

java - 从 grails 应用程序中的自定义 groovy 文件加载 spring bean

尝试从 Grails 中的自定义 groovy 文件加载 spring bean2.3.7.我知道这个问题之前已经被问过,但是经过数小时的搜索,我无法找到从类路径加载的一致方法。

目标

  • 模块化resources.groovy成多个自定义资源文件
  • 将自定义资源文件放在标准位置:grails-app/conf/spring
  • 使用插件来做魔术;最小化开销

试过...

请注意上面,我使用的是beans {},而不是beans = {}显然它有所不同:

资源.groovy

这有效...

...并且根据docs,这也应该,但不是:

更新 - 工作选项

(为 Grails 2.3.7 工作)

选项 1: (src/java)

遵循lukelazarovic 的建议,这种方法很有效,因为 Grails 会自动将 groovy 文件复制(而不是编译)src/java到类路径中;在 Eclipse 和战争部署中工作正常:

选项 2:(grails-app/conf/spring)

这种方法允许在grails-app/conf/springideascultormark.esher的学分)中使用自定义 bean 配置文件

选项 3:(自定义插件)

如果您使用自定义插件,这种方法是理想的;样板配置被重构到插件中:

插件配置

Grails 应用程序

没有配置!...只需使用约定创建您的 bean 配置文件*BeansConfig.groovy,一切顺利!

2015 年 9 月 24 日更新

发现选项 3 的一些问题:

  • 加载重复的资源文件
  • 弹簧资源未正确配置test-app

我们设法解决了上述问题,以便grails-app/conf/spring在 eclipse、WAR、test-app 等中执行 Grails 时,任何资源文件都可以正常工作。

第一步:我们创建了一个类来更好地控制资源文件的定位和加载;这是必要的,因为由于交叉引用的 bean,一些文件被多次加载。我们使用一个插件来封装这个功能,所以这个类存在于那个插件中:

删除了BeansConfig.groovy后缀;WAR 生成现在拾取任何资源grails-app/conf/spring

在插件定义文件中,从 调用加载程序doWithSpring(),将BeanBuilder(委托)作为参数传递(非常重要):

就是这样,除了在中创建自定义资源文件外,对插件的用户没有任何要求grails-app/conf/spring

0 投票
2 回答
4296 浏览

java - 在单个 Camel 上下文中分离路由实例

我使用部署在 ActiveMQ 服务中的 Apache Camel 模块。

鉴于我使用 Spring DSL,并且文件routeContext中有路由定义(实现为)FilteringRouteContext.xml(简化):

接下来,我在其他 XML 文件(简化)中配置了 Camel Context:

我希望共享路由(带有 id= myFilteringRoute)从filteringRouteContext声明为,使用 IoC 术语,每个依赖实例,因此来自单个 Camel 上下文(带有 id= myRoute1myRoute2myRoute3)的每条路由都应该使用它自己的共享路由实例(带有 id = myFilteringRoute),具有单独的内部状态、bean 实例等。

换句话说,来自 Camel Context 的每条路由(带有 id= myRoute1, myRoute2, myRoute3不应该使用相同的共享路由实例(带有 id= myFilteringRoute),而应该有自己完全独立的实例(具有完全分离的内部状态和 bean 实例)

请考虑我的共享路由(带有 id= myFilteringRoute)可能会使用更多的 bean,它们可能有不同的范围(singleton,prototyperequest)。

我的问题是:我可以使用单个 Camel 上下文来实现这个目标,还是需要将我的路线(使用 id= myRoute1, myRoute2, myRoute3)放在单独的 Camel 上下文中?我的问题的最佳解决方案是什么?

如果我使用多个 Camel 上下文,并且每个上下文都使用 bean 与 ActiveMQ ( org.apache.activemq.camel.component.ActiveMQComponent) 或其他消耗内部或系统资源的 bean 通信,是否会对性能产生重要影响?

或者使用 Java DSL 而不是 Spring DSL 来解决我的问题可能更好?

谢谢你。

0 投票
1 回答
923 浏览

java - 使用来自另一个带有 grails DSL 的 bean 的静态方法的 Spring bean 配置

在 Grails 2.3.7 上,服务公开了几个装饰器方法:

我想使用这些装饰器方法配置服务,如下所示:

有没有办法做到这一点?

更新

感谢 Ian 的建议,我得到了这个通用解决方案:

配置cacheDecoratoras MethodInvokingFactoryBean,返回 singleton cacheManager,以安全地调用其方法。

0 投票
1 回答
2470 浏览

spring-integration - Spring Integration 4 异步请求/响应

我正在尝试使用 Spring Integration v4 的 DSL API 编写一个简单的消息流,如下所示:

由于请求/响应是异步的,当我通过初始网关注入消息时,消息会一直传递到 JMS_OUT_QUEUE。在此消息流之外,回复消息被放回 JMS_IN_QUEUE,然后由 JmsGatewayIn 拾取。此时,消息被处理并放入 out.ch (我知道响应到达 out.ch,因为我在那里有一个记录器拦截器记录放置在那里的消息)但是,网关永远不会收到响应。

此消息流之外的系统从 JMS_OUT_QUEUE 获取消息并将响应放置在 JMS_IN_QUEUE 中,而不是响应,而是接收javax.jms.MessageFormatException: MQJMS1061: Unable to deserialize object在自己的 JmsOutboundgateway 上接收到一个(我认为它无法通过查看日志来反序列化 jms 回复对象) .

我显然没有正确配置某些东西,但我不知道到底是什么。有谁知道我错过了什么?

使用 spring-integration-core-4.0.3.RELEASE、spring-integration-jms-4.0.3.RELEASE、spring-integration-java-dsl-1.0.0.M2、spring-jms-4.0.6.RELEASE。

我的网关配置如下:

我的集成流程配置如下:

感谢您对此的任何帮助,PM。

0 投票
1 回答
4203 浏览

spring - Spring Integration Java DSL - 如何使用重试建议调用 ServiceActivator 方法

我有一个带有 ServiceActivator 方法的 Component 类:

我有一个 Spring Integration 4 Java DSL 流,它调用 ServiceActivator 的 preCheck 方法,如下所示:

我现在正在尝试向服务调用添加重试建议(如此处所示http://docs.spring.io/spring-integration/reference/htmlsingle/#retry-config),但我想以 Java DSL 形式执行此操作如https://github.com/spring-projects/spring-integration-extensions/wiki/Spring-Integration-Java-DSL-Reference#dsl-and-endpoint-configuration中所述。

但是,我不太清楚如何在实践中将此建议应用到我的 DSL 形式的流程中。可能因为我还不太熟悉 lambdas 等而苦苦挣扎。

有人可以给我一些关于如何做到这一点的指示吗?

提前谢谢,PM

0 投票
1 回答
920 浏览

spring-integration - Spring Integration 4 - 在 Java DSL 中配置 LoadBalancingStrategy

我有一个简单的 Spring Integration 4 Java DSL 流,它使用DirectChannel'sLoadBalancingStrategy来循环Message对许多可能的 REST 服务的请求(即从两个可能的服务端点 URI 之一调用 REST 服务)。

我的流程当前是如何配置的:

我的配置有效,但我想知道是否有使用 Spring Integration 的 Java DSL 配置流程的更简单/更好的方法?

干杯,下午

0 投票
2 回答
2258 浏览

spring - 使用 Java DSL 的 Spring Batch Integration 配置

Spring Integration Java DSL ReferenceSpring Batch Java Configuration文档展示了如何将 Java Configuration 用于 Spring Integration 和 Spring Batch 。

但他们没有展示如何为 Spring Batch Integration 配置它。如何使用 DSL 配置 JobLaunchingGateway?

干杯,门诺

0 投票
1 回答
939 浏览

spring - 如何使用 Spring Integration DSL 配置 StepExecutionListener

我正在尝试配置 Spring Batch 侦听器以将消息发送到 Spring Integration Gateway 以获取 StepExecution 事件。

以下链接说明了如何使用 XML 进行配置

http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html#providing-feedback-with-informational-messages

如何使用 Spring Integration DSL 进行设置?我发现无法使用 DSL 配置具有服务接口的网关。

目前我通过实现一个实际的 StepExecutionListener 来解决这个问题,然后调用一个带有@MessagingGateway 注释的接口(调用相应的@Gateway 方法),以便将消息发送到通道。然后我为此通道设置了一个集成 DSL 流。

有没有更简单的方法使用 DSL,避免这种解决方法?是否有某种方法可以将批处理侦听器直接连接到网关,例如可以使用 XML 配置?

干杯,门诺

0 投票
1 回答
2498 浏览

rest - Spring DSL的URI如何传递REST获取参数

我的休息服务的示例 URI 如下:

http://xx.xx.xxx.xx:8080/myservice/service/encode?encrypt=true&payload=11/11/2013%207:59:15%20AM&ttl=10h

我在有我的服务的节点上使用的服务路由如下。这工作正常。路由应该将我们提供给服务的任何东西桥接起来。

我的麻烦在于客户端路线。时间组件工作正常,但我将任何内容附加到 GET 的努力都失败了。如果我能弄清楚如何做到这一点,我可以创建任意数量的客户端示例。

有人可以通过将上面的 URI 示例转换为 Sprint DSL 来帮助我吗?我希望你能告诉我怎么做。从那我可以弄清楚如何传递变量。