有什么类型的网站,如何建个人微信公众号,济南微信网站建设,怎样才能申请网站这是有关Spring Integration系列的第二篇文章。 本文以我们介绍Spring Integration的第一篇文章为基础。 上下文设置 在第一篇文章中#xff0c;我们创建了一个简单的Java应用程序#xff0c;其中 通过频道发送了一条消息#xff0c; 它被服务#xff08;即POJO#xf… 这是有关Spring Integration系列的第二篇文章。 本文以我们介绍Spring Integration的第一篇文章为基础。 上下文设置 在第一篇文章中我们创建了一个简单的Java应用程序其中 通过频道发送了一条消息 它被服务即POJO拦截并进行了修改。 然后通过另一个渠道发送 从通道读取并显示修改后的消息。 但是在执行此操作时请记住我们只是在此处介绍概念我们在应用程序中编写了一些特定于Spring的代码即测试类。 在本文中我们将解决这个问题并使我们的应用程序代码与Spring Integration api尽可能隔离。 这是通过Spring Integration称为gateways来完成的 。 存在网关的唯一目的是将消息传递相关的“管道”代码从“业务”代码中抽象出来。 业务逻辑可能实际上并不在乎是通过通道发送消息还是通过进行SOAP调用来实现功能。 到目前为止这种抽象虽然合乎逻辑且合乎需要但并非十分实用。 此时可能值得快速浏览一下《 Spring Integration参考手册》 。 但是如果您刚刚开始使用Spring Integration那么暂时最好阅读本文。 我建议您先洗手然后再返回参考手册该手册非常好但也非常详尽因此对于初学者来说可能不胜枚举。 网关可以是带有批注的POJO这很方便但在我看来却超出了整个目的或具有XML配置如果未经检查它很快会变成任何体面大小的应用程序的噩梦。 归根结底这确实是您的选择但是我喜欢走XML路线。 两种样式的配置选项在参考实现的本节中详细介绍。 Spring与网关的集成 因此让我们为HelloWorld服务创建另一个带有网关抛出的测试有关更多上下文请参阅本系列的第一篇文章 。 让我们从测试的Spring配置开始。 文件src / test / resources / org / academy / integration / HelloWorld1Test-context.xml ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:phttp://www.springframework.org/schema/pxmlns:inthttp://www.springframework.org/schema/integrationxsi:schemaLocationhttp://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-2.1.xsdint:channel idinputChannel/int:channelint:channel idoutputChannelint:queue capacity10 //int:channelint:service-activator input-channelinputChanneloutput-channeloutputChannel refhelloService methodgreet /bean idhelloService classorg.academy.integration.HelloWorld /int:gateway service-interfaceorg.academy.integration.Greetingsdefault-request-channelinputChannel default-reply-channeloutputChannel/int:gateway/beans 在这种情况下所有不同之处在于我们添加了一个网关。 这是一个称为org.academy.integration.Greetings的接口。 它与“ inputChannel”和“ outputChannel”交互分别发送和读取消息。 让我们编写界面。 文件/src/main/java/org/academy/integration/Greetings.java package org.academy.integration;public interface Greetings {public void send(String message);public String receive();} 然后我们添加此接口的实现。 等待。 没有实现。 而且我们不需要任何实现。 Spring使用一种名为GatewayProxyFactoryBean的东西向该网关注入一些基本代码从而使它可以读取基于字符串的简单消息而无需我们做任何事情。 那就对了。 没事 注–假设您不是在使用Spring Integration框架只是推敲字符串 就需要为大多数生产方案添加更多代码 。 因此不要习惯免费午餐。 但是尽管它在这里让我们深入研究。 现在让我们使用网关编写一个新的测试类并且完全不与通道和消息进行交互。 文件/src/test/java/org/academy/integration/HelloWorld1Test.java package org.academy.integration;import static org.junit.Assert.*;import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;RunWith(SpringJUnit4ClassRunner.class)
ContextConfiguration
public class HelloWorld1Test {private final static Logger logger LoggerFactory.getLogger(HelloWorld1Test.class);AutowiredGreetings greetings;Testpublic void test() {greetings.send(World);assertEquals(greetings.receive(), Hello World);logger.debug(Spring Integration with gateways.);}} 现在我们的测试班要干净得多。 它根本不了解频道消息或与Spring Integration相关的任何信息。 它只知道一个问候实例通过.send方法向其提供一些数据并通过.receive方法获取修改后的数据。 因此 业务逻辑忽略了管道逻辑 从而使代码更加简洁。 现在只需键入“ mvn -e clean install”或使用m2e插件您就应该能够运行单元测试并确认给定的字符串“ World”HelloWorld服务的确在整个通道安排中确实返回了“ Hello World”和消息。 同样可选但我强烈建议您运行“ mvn -e全新安装站点”。 假设您已正确配置了一些代码覆盖率工具在我的情况下为cobertura将为您提供一个不错HTML报告其中显示了代码覆盖率。 在这种情况下它将是100。 我已经写了一系列关于代码质量的文章 详细介绍了该主题但是总而言之确保我使用和推荐使用的任何编码实践/框架都符合一些基本的代码质量标准对我来说非常重要。 。 能够进行单元测试和测量是我所做的这样一项基本检查。 毋庸置疑一般来说Spring包括Spring集成会通过带有鲜艳色彩的检查。 结论 本文就是这样。 快乐的编码。 建议进一步阅读... 以下是本系列早期文章的链接 Hello World with Spring 3 MVC 使用Spring 3 MVC处理表单 使用Spring 3进行单元测试和记录 使用Spring 3 MVC处理表单验证 引入Spring集成 这些是我可以推荐的出色材料 Spring Integration入门 Spring Integration的示例代码 Spring集成–第1节– Hello World Spring集成–第2节–更多世界 参考 Tech for Enterprise博客上我们JCG合作伙伴 Partho的Spring与Gatways的集成 。 翻译自: https://www.javacodegeeks.com/2012/08/spring-integration-with-gateways.html