javascript
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</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-twitter將spring-core和spring-web都定義為依賴項,但舊版本分別為3.0.7.RELEASE和3.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交互–這將是本系列下一篇文章的重點。
翻譯自: https://www.javacodegeeks.com/2013/04/spring-social-twitter-setup.html
spring pom設置
總結
以上是生活随笔為你收集整理的spring pom设置_Spring社交Twitter设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工商银行网银电脑版(工商银行网银电脑版下
- 下一篇: Java 9迁移指南:七个最常见的挑战