spring pom设置_Spring社交Twitter设置

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设置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache mediawiki 安装_如何在CentOS 7上安装MediaWiki

如果您想构建自己的wiki网站&#xff0c;可以使用MediaWiki轻松完成&#xff0c; MediaWiki是一个最初为WikiPedia创建的PHP开源应用程序。 由于为此应用程序开发的第三方扩展&#xff0c;其功能可以轻松扩展。在本文中&#xff0c;我们将讨论如何使用LAMP (Linux&#xff0c;A…

Java 9迁移指南:七个最常见的挑战

我确定您已经听说过更新到Java 9并不是一件容易的事&#xff0c;甚至可能是不兼容的更新&#xff0c;而且对于大型代码库而言&#xff0c;迁移毫无意义。 这样做之后&#xff0c;我迁移了一个相当大的旧代码库&#xff0c;我可以告诉你&#xff0c;这还不错。 比碰到Java 8确实…

nuxt sass 全局变量的问题_Sass入门教程

SASS(Syntactically Awesome Stylesheet)是一个CSS预处理器&#xff0c;有助于减少CSS的重复&#xff0c;节省时间。 它是更稳定和强大的CSS扩展语言描述文档的风格结构。sass中文网而且Sass算是CSS的超集&#xff0c;它100%兼容CSS的语法&#xff0c;所有在 CSS 中正常工作的代…

javascript对象包含哪些要素_javascript有哪几种对象?

JavaScript中支持3种对象&#xff1a;内置对象(原生对象)&#xff0c;浏览器对象&#xff0c;自定义对象。下面本篇文章就来给大家介绍一下&#xff0c;希望对大家有所帮助。对象包含两个要素&#xff1a;1、用来描述对象特性的一组数据&#xff0c;也就是若干变量&#xff0c;…

用C语言实现优先级排序和MATLABsort函数的比较

为了实现对两个数组进行优先级排序,用c语言有两种实现方法, 一是需要对两个数组进行排序,然后对排序后的坐标再排序,(求最小值是我自己需要) 二是直接寻找数组排序后的元素坐标,调用qsort函数进行排序,排序后的数组会存放在原数组中,那么就有两种寻找坐标,一是寻找…

造成内存泄漏_如何造成内存泄漏

造成内存泄漏这将是一个相当邪恶的职位-当您确实希望使某人的生活陷入困境时&#xff0c;您将在谷歌上搜索。 在Java开发领域&#xff0c;内存泄漏只是您在这种情况下会引入的错误类型。 为您的受害者保证几天甚至几周的办公室不眠之夜。 我们将在这篇文章中描述两次泄漏。 两…

寄存器分配图着色_寄存器分配

寄存器分配&#xff0c;是通过将程序变量尽可能地分配到寄存器&#xff0c;从而提高程序执行速度的一种方法。寄存器是编译器优化中最为重要的问题之一(好的寄存器分配能够提高程序执行速度超过250%)&#xff1b;也是编译器理论中最热点的研究领域之一(研究界已经提出来大量寄存…

通过Java,Spring Boot应用程序将Gmail用作SMTP服务器

Gmail用户可以使用Gmail的SMTP服务器smtp.gmail.com从其Spring Boot应用程序发送电子邮件。 为此&#xff0c;让我们在应用程序中进行一些设置&#xff1a; 在application.properties文件中提供SMTP连接属性&#xff1a; spring.mail.hostsmtp.gmail.com spring.mail.username…

在建工地扬尘在线监控系统推荐_配电室为何需要安装蓄电池在线监控系统?保定钰鑫电气...

配电室蓄电池在线监控系统提高了蓄电池运行质量、增强了电力系统的安全运行、保障蓄电池运行环境的可靠&#xff0c;打造无人值守配电室、智能化运维模式&#xff0c;减少蓄电池损耗、浪费&#xff0c;降低了维护成本&#xff0c;为何需要安装一套配电室蓄电池在线监测系统&…

最好的Java开发人员测试和集成工具

通过从应用程序中学习企业APM产品&#xff0c;发现更快&#xff0c;更高效的性能监控。 参加AppDynamics APM导览&#xff01; 无论您是刚开始还是已经使用了一段时间&#xff0c;使用正确的工具进行编程都可以对项目的成功产生巨大的影响。 适当的工具使您可以编写更好的代码…

最速下降法matlab全局最小值_梯度下降概念

1、梯度概念(1)从几何意义上讲&#xff0c;就是函数变化最快的地方。在单变量的函数中&#xff0c;梯度只是导数&#xff0c;其实就是函数在某个给定点的切线的斜率&#xff1b;在多变量函数中&#xff0c;梯度是一个向量&#xff0c;向量有方向&#xff0c;梯度的方向就指出了…

jpa querydsl_JPA – Querydsl投影

jpa querydsl在我的上一篇文章中&#xff1a; JPA –基本投影 –我提到了构建JPA投影的两种基本可能性。 这篇文章为您带来了更多示例&#xff0c;这次基于Querydsl框架。 注意&#xff0c;这里我指的是Querydsl版本3.1.1。 重塑构造函数表达式 看下面的代码&#xff1a; ...…

同步服务老是报错_悬而未决:MYSQL配置好主从同步后没有报错,但数据一直没有同步过来是什么原因? | 学步园...

我是用下面的步骤来配置主从数据库服务器(都是MYSQL 5.1.47)的&#xff1a;1、在主服务器上FLUSH TABLES WITH READ LOCK;然后再复制数据库文件到从服务器。2、在主服务器上创建同步用户账号rsyncuser。修改my.cnf开启主服务器上的bing-log&#xff0c;没有指明binlog-do-db&am…

IntelliJ中的远程调试Wildfly应用程序

远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序。 Java开箱即-agentlib:jdwp[options]支持远程调试&#xff1a;目标应用程序必须使用-agentlib:jdwp[options]选项执行&#xff0c; -agentlib:jdwp[options]选项加​​载Java调试线协议&#xff08;jdwp&…

云桌面 瘦终端_云桌面选择云终端还是瘦客户机?

我们发现最近很多用户在部署青椒云桌面的时候&#xff0c;经常会出现这么一种情况&#xff0c;那就是不知道是该选择云终端还是瘦客户机而不断纠结的&#xff0c;云终端和瘦客户机到底有什么不同的呢&#xff0c;为什么经常会有很多用户因为不知道如何选择它们而感到纠结的呢&a…

cordic ip核 vivado_Xilinx Vivado CORDIC IP求解atan 反正切

赛灵思官方提供了cordic(coordinate rotational digital computer) ip核实现直角坐标极坐标变化&#xff0c;三角函数的操作。我介绍下它进行反正切求解的使用&#xff1a;新建个简单工程&#xff1a;bd如下进行ip设置&#xff0c;选择运算位反正切后&#xff0c;ip端口回自动变…

检测和测试停滞的流– RxJava常见问题解答

假设您有一个流以不可预测的频率发布事件。 有时您可以预期每秒会有数十条消息&#xff0c;但是偶尔几秒钟都看不到任何事件。 如果您的流是通过Web套接字&#xff0c;SSE或任何其他网络协议传输的&#xff0c;则可能会出现问题。 静默时间过长&#xff08;停顿&#xff09;可以…

linux 远程挂载摄像头_如何实现嵌入式Linux下USB摄像头视频采集

展开全部在linux下所e5a48de588b662616964757a686964616f31333337613134有设备都是文件。所以对摄像头的操作其实就是对文件的操作。USB摄像头的设备文件就是在/dev目录下的video0(假如只有一个摄像头)。在linux下操作摄像头就是使用v4l2对摄像头进行视频的操作&#xff0c;操作…

Effective Java第三版有哪些新功能?

自从听说即将出版的有效Java 第三版以来&#xff0c;我一直想知道其中有什么新内容。 我假设将涵盖自Java 6以来引入Java的功能&#xff0c;的确如此。 但是&#xff0c;第三版Java开发人员经典版也有一些其他更改。 在本文中&#xff0c;我提供了有关在第三版中添加&#xff0…

es管理kabina_小白学ES 05 - 通过Kibana管理集群服务

目录前述步骤:① 启动Kibana;② 通过浏览器访问Kibana;③ 进入Dev Tools(开发者工具)界面.1 检查集群的健康状况ES提供了一套_cat API, 可以查看ES中的各类数据.# 查询API:GET /_cat/health?v# 响应信息如下:epoch timestamp cluster status node.total node.data shards pri …