spring pom设置

在本系列的第一部分中 ,我们研究了如何使用StackExchange REST API来检索其主要问题。 第二部分将重点设置使用Spring Social Twitter项目与Twitter REST API交互所需的支持。 最终目标是能够在多个帐户上每天发送两个问题,每个帐户集中讨论一个主题。

1.使用Spring Social Twitter

使用Spring Social Twitter项目所需的必需依赖项很简单。 首先,我们定义spring-social-twitter本身:

<dependency><groupId>org.springframework.social</groupId><artifactId>spring-social-twitter</artifactId><version>1.0.3.RELEASE</version>
</dependency>

然后,我们需要使用更多最新版本覆盖其中的某些依赖项:

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>3.2.2.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.2.2.RELEASE</version>
</dependency>
<dependency><artifactId>jackson-mapper-asl</artifactId><groupId>org.codehaus.jackson</groupId><version>1.9.12</version>
</dependency>

spring-social-twitterspring-corespring-web都定义为依赖项,但旧版本分别为3.0.7.RELEASE3.1.0.RELEASE 。 在我们自己的pom中覆盖它们可以确保项目使用的是我们定义的最新版本,而不是这些较旧的继承版本。

2.创建一个Twitter应用程序

这个用例-用个人帐户而不是其他用户帐户发推文,很简单。 如果应用程序需要在其每个Twitter帐户上为多个用户发推文,它很简单,这使我们可以省去大多数OAuth编排 。 因此,对于我们的用例,我们将直接创建TwitterTemplate ,因为我们可以手动设置所需的一切。 我们需要的第一件事是一个开发应用程序 –登录后可以在此处创建一个应用程序。创建该应用程序后,我们将具有“ 消费者密钥”和“ 消费者秘密” –这些是从“应用程序”页面获得的–在“ 详细信息”选项卡上的“ OAuth设置 。 另外,为了允许应用程序在该帐户上鸣叫,必须将“ 读取和写入访问”设置为替换默认的“ 只读”特权。

3.设置一个

接下来, TwitterTemplate需要提供访问令牌访问令牌密钥 。 也可以从“应用程序”页面(在“ 详细信息”选项卡下,“ 创建我的访问令牌”)生成这些密码 。 然后,可以从OAuth工具标签下检索访问令牌和密钥。 始终可以通过“ 重新创建我的访问令牌”操作在“ 详细信息”选项卡上重新生成新的。 至此,我们拥有了所需的一切-使用者密钥和使用者密钥,以及访问令牌和访问令牌密钥-这意味着我们可以继续为该应用程序创建TwitterTemplate

new TwitterTemplate(consumerKey, consumerSecret, accessToken, accessTokenSecret);

4.每个帐户一个模板

现在,我们已经了解了如何为单个帐户创建一个TwitterTemplate ,我们可以再次回顾一下用例-我们需要在多个帐户上发推文-这意味着我们需要多个TwitterTemplate实例。 可以使用简单的机制根据要求轻松创建它们:

@Component
public class TwitterTemplateCreator {@Autowiredprivate Environment env;//public Twitter getTwitterTemplate(String accountName) {String consumerKey = env.getProperty(accountName + ".consumerKey");String consumerSecret = env.getProperty(accountName + ".consumerSecret");String accessToken = env.getProperty(accountName + ".accessToken");String accessTokenSecret = env.getProperty(accountName + ".accessTokenSecret");Preconditions.checkNotNull(consumerKey);Preconditions.checkNotNull(consumerSecret);Preconditions.checkNotNull(accessToken);Preconditions.checkNotNull(accessTokenSecret);//TwitterTemplate twitterTemplate =new TwitterTemplate(consumerKey, consumerSecret, accessToken, accessTokenSecret);return twitterTemplate;}
}

当然,这四个安全工件是按属性外部化到属性文件中的; 例如,对于SpringAtSO帐户 :

SpringAtSO.consumerKey=nqYezCjxkHabaX6cdte12g
SpringAtSO.consumerSecret=7REmgFW4SnVWpD4EV5Zy9wB2ZEMM9WKxTaZwrgX3i4A
SpringAtSO.accessToken=1197830142-t44T7vwgmOnue8EoAxI1cDyDAEBAvple80s1SQ3
SpringAtSO.accessTokenSecret=ZIpghEJgFGNGQZzDFBT5TgsyeqDKY2zQmYsounPafE

这实现了灵活性和安全性的良好结合-安全凭证不是代码库的一部分(它是开源的 ),而是独立存在于文件系统上,并由Spring拾取并通过简单的配置在Spring Enviroment中可用:

@Configuration
@PropertySource({ "file:///opt/stack/twitter.properties" })
public class TwitterConfig {//
}

Spring的属性是之前已经讨论过的主题,因此在此我们将不进一步讨论该主题。 最后, 测试将验证一个帐户是否具有在Spring Environment中容易获得的必要安全信息; 如果属性不存在,则getTwitterTemplate逻辑应通过NullPointerException测试失败:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { TwitterConfig.class })
public class TwitterTemplateCreatorIntegrationTest {@Autowiredprivate TwitterTemplateCreator twitterTemplateCreator;//@Testpublic void givenValidAccountSpringAtSO_whenRetrievingTwitterClient_thenNoException() {twitterTemplateCreator.getTwitterTemplate(SimpleTwitterAccount.SpringAtSO.name());}
}

5.鸣叫

随着TwitterTemplate创造,让我们来看啁啾的实际行动。 为此,我们将使用一个非常简单的服务,接受一个TwitterTemplate并使用其底层API创建一条推文:

@Service
public class TwitterService {private Logger logger = LoggerFactory.getLogger(getClass());//public void tweet(Twitter twitter, String tweetText) {try {twitter.timelineOperations().updateStatus(tweetText);} catch (RuntimeException ex) {logger.error("Unable to tweet" + tweetText, ex);}}
}

6.测试

最后,我们可以编写一个集成测试来执行为帐户配置TwitterTemplate并在该帐户上发布Twitter的整个过程:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { TwitterConfig.class })
public class TweetServiceLiveTest {@Autowiredprivate TwitterService twitterService;@Autowiredprivate TwitterTemplateCreator twitterCreator;//// tests@Testpublic void whenTweeting_thenNoExceptions() {Twitter twitterTemplate = twitterCreator.getTwitterTemplate("SpringAtSO");twitterService.tweet(twitterTemplate, "First Tweet");}
}

7.结论

在这一点上,我们创建的Twitter API与StackExchange API完全分开,可以独立于该特定用例使用,以进行任何鸣叫。 从Stack Exchange帐户发布问题时,下一步的逻辑步骤是创建一个组件–与我们到目前为止介绍的Twitter和StackExchange API交互–这将是本系列下一篇文章的重点。

参考:来自bakgung博客的JCG合作伙伴 Eugen Paraschiv的Spring Social Twitter设置 。

翻译自: https://www.javacodegeeks.com/2013/04/spring-social-twitter-setup.html

spring pom设置

spring pom设置_Spring社交Twitter设置相关推荐

  1. java rmi接口 超时设置_Spring RMI客户端读超时设置 | 学步园

    标准Java的RMI设置我所知道的有三种方式,其中第1.2种不区分框架均适用,但影响整个JVM级别的RMI服务 1. 启动时设置sun.rmi.transport.tcp.responseTimeou ...

  2. java spring配置文件路径_java - 在spring b中从命令行设置活动配置文件和配置位置...

    java - 在spring b中从命令行设置活动配置文件和配置位置 我有一个春季启动应用程序. 我的应用程序中有三个配置文件 - > 开发,分期和生产. 所以我有3个文件 应用developm ...

  3. [转载]spring+mybatis加载属性文件设置数据源失败原因及解决方案 - 泡在网上的日子

    spring+mybatis加载属性文件设置数据源失败原因及解决方案 - 泡在网上的日子 http://www.jcodecraeer.com/a/chengxusheji/java/2013/062 ...

  4. 掌握 Spring Boot 运行内存及内存参数设置:助力高效应用部署与优化

    pring Boot 是当今非常流行的 Java 应用框架之一,在企业级应用开发中被广泛使用.应用部署和优化是企业级应用开发的一个非常重要的方面.在这篇博客中,我们将学习如何掌握 Spring Boo ...

  5. Spring Security系列之Spring Social实现微信社交登录(九)

    社交登录又称作社会化登录(Social Login),是指网站的用户可以使用腾讯QQ.人人网.开心网.新浪微博.搜狐微博.腾讯微博.淘宝.豆瓣.MSN.Google等社会化媒体账号登录该网站. 前言 ...

  6. spring mvc原理_Spring常见问题整理

    一.为什么要使用 spring? 1.Spring简介 spring 是一个开源的轻量级 JavaBean 容器框架.使用 JavaBean 代替 EJB ,并提供了丰富的企业应用功能,降低应用开发的 ...

  7. java 设置系统参数_Java如何设置系统参数和运行参数

    系统参数 系统级全局变量,该参数在程序中任何位置都可以访问到.优先级最高,覆盖程序中同名配置. 系统参数的标准格式为:-Dargname=argvalue,多个参数之间用空格隔开,如果参数值中间有空格 ...

  8. 在PHP中给表格加上css样式,表格CSS样式设置 给table表格设置CSS样式表

    表格table tr td CSS花色设置 给table表格设置CSS花式表 在一个网页中多处运用了表格table标签,这个时候给指定的表格对象设置装备摆设款式仿照照旧概略经由CSS发展管束配置. 着 ...

  9. Jtabbedpane设置透明、Jpanel设置透明

    摘自 https://zhidao.baidu.com/question/983204331427010139.html java中如何设置Jtabbedpane为透明 20 在Jtabbedpane ...

最新文章

  1. 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)...
  2. AgileConfig-轻量级配置中心 1.1.0 发布,支持应用间配置继承
  3. ASP.NET Core 认证与授权[5]:初识授权
  4. 查找表的原理与结构 什么是竞争与冒险现象?怎样判断?如何消除?
  5. Python的Pexpect库
  6. python安装常见问题_Python常见问题
  7. 【idea基础知识】常用快捷键整理
  8. 功能安全 李艳文_李艳文:智能网联全新安全问题凸显 相关自动驾驶事故逐年增加...
  9. 机器学习 深度学习 ai_用AI玩世界末日:深度Q学习的多目标优化
  10. python aiml开发文档_Python AIML搭建聊天机器人
  11. android RS485串口接线正反的问题
  12. lvds接口屏线安装图解_lvds液晶屏幕接口详解
  13. c盘空间清理,无需软件
  14. rust进水器怎么用_净水器的正确使用方法?
  15. 高考查询系统 (完善中)
  16. word保存html格式批注没有了,Word批注保存后再打开没了
  17. C# 压缩PDF文档
  18. mysql怎么设置唯一键_MySQL设置唯一键
  19. 虚拟机内存不足的问题
  20. 【问题解决】STM32F4串口打印乱码问题

热门文章

  1. JavaFX8 modena样式(css)源码
  2. JavaScript学习总结(七)——JavaScript函数(function)
  3. EF框架中,在实体中手动更新字段,数据库数据未同步到程序中应该怎么解决呢?
  4. mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
  5. json vs obj
  6. 2-7 SpringBoot常用注解讲解
  7. IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 !!!!!!!!!!有用
  8. MySQL存储过程+游标+触发器
  9. qt弹簧教程_弹簧启动执行器教程
  10. streaming api_通过Spring Integration消费Twitter Streaming API