问题标签 [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.
java - Camel + Groovy + Spring DSL 的奇怪行为
我有以下路线:
此路由应简单地返回 URL 中传递的值作为 id 参数。当我执行此操作时,第一个调用有效。第一次调用之后的任何内容都会返回第一次调用中传递的值。因此,如果第一次调用是 hostname/convert/999,则任何其他调用都将返回 999,无论 URL 中传递了什么 id。看起来 groovy 正在做一些我不理解的有状态的事情。
有什么想法吗?
JavaScript 似乎也发生了同样的事情。
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/spring
( ideascultor和mark.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
java - 在单个 Camel 上下文中分离路由实例
我使用部署在 ActiveMQ 服务中的 Apache Camel 模块。
鉴于我使用 Spring DSL,并且文件routeContext
中有路由定义(实现为)FilteringRouteContext.xml
(简化):
接下来,我在其他 XML 文件(简化)中配置了 Camel Context:
我希望共享路由(带有 id= myFilteringRoute
)从filteringRouteContext
声明为,使用 IoC 术语,每个依赖实例,因此来自单个 Camel 上下文(带有 id= myRoute1
,myRoute2
,myRoute3
)的每条路由都应该使用它自己的共享路由实例(带有 id = myFilteringRoute
),具有单独的内部状态、bean 实例等。
换句话说,来自 Camel Context 的每条路由(带有 id= myRoute1
, myRoute2
, myRoute3
)不应该使用相同的共享路由实例(带有 id= myFilteringRoute
),而应该有自己完全独立的实例(具有完全分离的内部状态和 bean 实例)
请考虑我的共享路由(带有 id= myFilteringRoute
)可能会使用更多的 bean,它们可能有不同的范围(singleton
,prototype
等request
)。
我的问题是:我可以使用单个 Camel 上下文来实现这个目标,还是需要将我的路线(使用 id= myRoute1
, myRoute2
, myRoute3
)放在单独的 Camel 上下文中?我的问题的最佳解决方案是什么?
如果我使用多个 Camel 上下文,并且每个上下文都使用 bean 与 ActiveMQ ( org.apache.activemq.camel.component.ActiveMQComponent
) 或其他消耗内部或系统资源的 bean 通信,是否会对性能产生重要影响?
或者使用 Java DSL 而不是 Spring DSL 来解决我的问题可能更好?
谢谢你。
java - 使用来自另一个带有 grails DSL 的 bean 的静态方法的 Spring bean 配置
在 Grails 2.3.7 上,服务公开了几个装饰器方法:
我想使用这些装饰器方法配置服务,如下所示:
有没有办法做到这一点?
更新
感谢 Ian 的建议,我得到了这个通用解决方案:
配置cacheDecorator
as MethodInvokingFactoryBean
,返回 singleton cacheManager
,以安全地调用其方法。
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。
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
spring-integration - Spring Integration 4 - 在 Java DSL 中配置 LoadBalancingStrategy
我有一个简单的 Spring Integration 4 Java DSL 流,它使用DirectChannel
'sLoadBalancingStrategy
来循环Message
对许多可能的 REST 服务的请求(即从两个可能的服务端点 URI 之一调用 REST 服务)。
我的流程当前是如何配置的:
我的配置有效,但我想知道是否有使用 Spring Integration 的 Java DSL 配置流程的更简单/更好的方法?
干杯,下午
spring - 使用 Java DSL 的 Spring Batch Integration 配置
Spring Integration Java DSL Reference和Spring Batch Java Configuration文档展示了如何将 Java Configuration 用于 Spring Integration 和 Spring Batch 。
但他们没有展示如何为 Spring Batch Integration 配置它。如何使用 DSL 配置 JobLaunchingGateway?
干杯,门诺
spring - 如何使用 Spring Integration DSL 配置 StepExecutionListener
我正在尝试配置 Spring Batch 侦听器以将消息发送到 Spring Integration Gateway 以获取 StepExecution 事件。
以下链接说明了如何使用 XML 进行配置
如何使用 Spring Integration DSL 进行设置?我发现无法使用 DSL 配置具有服务接口的网关。
目前我通过实现一个实际的 StepExecutionListener 来解决这个问题,然后调用一个带有@MessagingGateway 注释的接口(调用相应的@Gateway 方法),以便将消息发送到通道。然后我为此通道设置了一个集成 DSL 流。
有没有更简单的方法使用 DSL,避免这种解决方法?是否有某种方法可以将批处理侦听器直接连接到网关,例如可以使用 XML 配置?
干杯,门诺
rest - Spring DSL的URI如何传递REST获取参数
我的休息服务的示例 URI 如下:
我在有我的服务的节点上使用的服务路由如下。这工作正常。路由应该将我们提供给服务的任何东西桥接起来。
我的麻烦在于客户端路线。时间组件工作正常,但我将任何内容附加到 GET 的努力都失败了。如果我能弄清楚如何做到这一点,我可以创建任意数量的客户端示例。
有人可以通过将上面的 URI 示例转换为 Sprint DSL 来帮助我吗?我希望你能告诉我怎么做。从那我可以弄清楚如何传递变量。