日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring social_Spring Social入门

發布時間:2023/12/3 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring social_Spring Social入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spring social

像我一樣,無論是添加簡單的Facebook“贊”按鈕,一大堆“共享”按鈕還是顯示時間軸信息,您都不會注意到當前對應用程序“社交化”的熱衷。 每個人都在做這件事,包括Spring的家伙,事實上,他們提出了一個叫做Spring Social的靈巧的API,可讓您將您的應用程序與許多軟件即服務(SaaS)提要(例如Twitter, Facebook,LinkedIn等

本文以及接下來的幾篇博客通過演示Spring Social的使用來了解整個社交場景,而我將從非常基礎開始。

如果您看過Spring Social Samples,您會知道它們包含幾個非常好的和完整的“ quickstart”應用程序。 一個用于Spring 3.0.x,另一個用于Spring3.1.x。 在研究這些應用程序時,令我印象深刻的是,您必須學習多少概念才能欣賞正在發生的事情。 這包括配置,外部授權,提要集成,憑證持久性等……大部分復雜性是由于您的用戶需要登錄其軟件即服務(SaaS)帳戶(例如Twitter,Facebook或QZone),以便您的應用程序可以訪問其數據1 。 由于周圍有大量的SaaS提供程序以及它們使用的授權協議數量不同,這使情況更加復雜。

因此,我認為我會嘗試將所有這些分解為各個單獨的組件,以說明如何構建有用的應用程序; 但是,我將從一些背景開始。

Spring的家伙們正確地認識到Internet上有如此眾多的SaaS提供程序,他們永遠無法為所有這些提供模塊,因此他們將功能分為兩部分,第一部分包括spring-social-core和spring-social-web模塊,為每個SaaS提供程序提供基本的連接和授權代碼。 提供所有這些聽起來像是一項艱巨的任務,但是它的簡化之處在于,要成為SaaS提供者,您需要實現所謂的OAuth協議 。 我還沒有介紹OAuth的詳細信息,但簡而言之,OAuth協議執行了一個復雜的小操作,允許用戶與您的應用程序共享其SaaS數據(即他們在Facebook等上擁有的內容),而無需用戶分發他們的您的應用程序的憑據。 至少有三個版本:1.0、1.0a和2.0,并且SaaS提供程序可以自由實現自己喜歡的任何版本,通常會添加自己的專有功能。
此拆分的第二部分包括SaaS提供程序模塊,這些模塊知道如何與最低級別的各個服務提供程序服務器進行通信。 Spring的家伙目前提供 基本服務 ,西方世界是 Facebook , LinkedIn 和 Twitter 。 采用廣泛的模塊化方法的好處是,您還可以使用很多其他社區主導的模塊:

  • Spring社交500px
  • Spring社交BitBucket
  • Spring社交挖掘
  • Spring社交保管箱
  • Spring社交展
  • Spring社交電影
  • Spring社交四方
  • Spring社交Google
  • Spring社交Instagram
  • Spring社交Last.fm
  • Spring Social Live(Windows Live)
  • Spring社會味iso
  • Spring社交Mixcloud
  • Spring社交Nk
  • Spring社會銷售人員
  • Spring社交SoundCloud
  • Spring社交Tumblr
  • Spring社交視頻
  • Spring社交活動
  • Spring社交微博
  • Spring社會興
  • Spring社交Yammer
  • Spring社會保障模塊
  • Spring Social Grails插件

但是,這只是可用服務數量的一部分:要查看此列表的大小,請訪問AddThis網站,并找出它們支持的服務。

返回代碼

現在,如果您像我一樣,那么當涉及到編程時,您會討厭安全性:從開發角度來看,這非常麻煩,會阻止您編寫代碼并使您的生活變得困難,所以我想我應該開始通過扔掉所有東西并編寫一個顯示一些基本SaaS數據的小應用程序。 事實證明,這可能是因為某些SaaS提供商(例如Twitter)同時服務于私有數據和公共數據。 私有數據是您需要登錄的東西,而公共數據對任何人都可用。

在今天的場景中,我正在編寫一個基本應用程序,該應用程序使用Spring Social Twitter Module在應用程序中顯示Twitter用戶的時間線,而您要做的只是Twitter用戶的屏幕名稱。

要創建該應用程序,第一步是使用SpringSource Toolkit儀表板的模板部分創建一個基本的Spring MVC項目。 這提供了一個Web應用程序,可幫助您入門。

第二步是將以下依賴項添加到pom.xml文件中:

<!-- Twitter API --><dependency><groupId>org.springframework.social</groupId><artifactId>spring-social-twitter</artifactId><version>${org.springframework.social-twitter-version}</version></dependency><!-- CGLIB, only required and used for @Configuration usage: could be removed in future release of Spring --><dependency><groupId>cglib</groupId><artifactId>cglib-nodep</artifactId><version>2.2</version></dependency>

上面的第一個依賴關系是針對Spring Social的Twitter API的,而第二個依賴關系是使用Spring 3的@Configuration注釋配置應用程序所必需的。 請注意,您還需要通過添加以下內容來指定Twitter API版本號:

<org.springframework.social-twitter-version>1.0.2.RELEASE</org.springframework.social-twitter-version>

…到文件頂部的<properties>部分。

步驟3是您需要配置Spring的地方。 如果查看Spring Social示例代碼,您會注意到Spring的家伙使用Java和Spring 3 @Configuration注釋配置他們的應用程序。 這是因為基于Java的配置比基于XML的原始配置具有更大的靈活性。

@Configurationpublic class SimpleTwitterConfig {private static Twitter twitter;public SimpleTwitterConfig() {if (twitter == null) {twitter = new TwitterTemplate();}}/*** A proxy to a request-scoped object representing the simplest Twitter API* - one that doesn't need any authorization*/@Bean@Scope(value = 'request', proxyMode = ScopedProxyMode.INTERFACES)public Twitter twitter() {return twitter;}}

上面的代碼所做的全部就是通過Spring的Twitter接口為Spring提供一個簡單的TwitterTemplate對象。 對于這個基本應用程序,使用@Configuration絕對是多余的,但是我將在以后的博客中繼續使用它。

有關@Configuration批注和基于Java的配置的更多信息,請查看:

  • Spring的基于Java的依賴注入
  • 更多基于Spring Java的DI
  • 編寫完配置類后,接下來要做的就是整理控制器。 在這個簡單的示例中,我使用了一個簡單的@RequestMapping處理程序,該處理程序處理如下所示的URL:

    <a href=timeline?id=roghughe>Grab Twitter User Time Line for @roghughe</a><br />

    ……代碼看起來像這樣:

    @Controllerpublic class TwitterTimeLineController {private static final Logger logger = LoggerFactory.getLogger(TwitterTimeLineController.class);private final Twitter twitter;@Autowiredpublic TwitterTimeLineController(Twitter twitter) {this.twitter = twitter;}@RequestMapping(value = 'timeline', method = RequestMethod.GET)public String getUserTimeline(@RequestParam('id') String screenName, Model model) {logger.info('Loading Twitter timeline for :' + screenName);List<Tweet> results = queryForTweets(screenName);// Optional Step - format the Tweets into HTMLformatTweets(results);model.addAttribute('tweets', results);model.addAttribute('id', screenName);return 'timeline';}private List<Tweet> queryForTweets(String screenName) {TimelineOperations timelineOps = twitter.timelineOperations();List<Tweet> results = timelineOps.getUserTimeline(screenName);logger.info('Fond Twitter timeline for :' + screenName + ' adding ' + results.size() + ' tweets to model');return results;}private void formatTweets(List<Tweet> tweets) {ByteArrayOutputStream bos = new ByteArrayOutputStream();StateMachine<TweetState> stateMachine = createStateMachine(bos);for (Tweet tweet : tweets) {bos.reset();String text = tweet.getText();stateMachine.processStream(new ByteArrayInputStream(text.getBytes()));String out = bos.toString();tweet.setText(out);}}private StateMachine<TweetState> createStateMachine(ByteArrayOutputStream bos) {StateMachine<TweetState> machine = new StateMachine<TweetState>(TweetState.OFF);// Add some actions to the statemachinemachine.addAction(TweetState.OFF, new DefaultAction(bos));machine.addAction(TweetState.RUNNING, new DefaultAction(bos));machine.addAction(TweetState.READY, new ReadyAction(bos));machine.addAction(TweetState.HASHTAG, new CaptureTag(bos, new HashTagStrategy()));machine.addAction(TweetState.NAMETAG, new CaptureTag(bos, new UserNameStrategy()));machine.addAction(TweetState.HTTPCHECK, new CheckHttpAction(bos));machine.addAction(TweetState.URL, new CaptureTag(bos, new UrlStrategy()));return machine;}}

    getUserTimeline方法包含三個步驟:首先,它包含一些推文,進行一些格式化,然后將結果放入模型中。 對于此博客,最重要的一點是掌握推文,您可以看到這是通過List <tweet> queryForTweets(String screenName)方法完成的。 此方法有兩個步驟:使用Twitter對象獲取TimelineOperations實例,然后使用該對象使用屏幕名稱作為參數來查詢時間線。

    如果您查看Twitter界面,它將充當工廠對象,并返回其他對象來處理不同的Twitter功能:時間軸,直接消息傳遞,搜索等。我想這是因為開發人員意識到Twitter本身包含了如此多的功能,如果所有必需的方法都在一個類中,然后他們手上會有一個上帝對象 。

    我還包括了將Tweets轉換為HTML的可選步驟。 為此,我使用了State Machine項目和博客中的JAR,您可以在formatTweets(...)方法中查看其工作方式。

    將Tweet的列表作為屬性放入模型后,要完成的最后一件事情是編寫一個JSP來顯示數據:

    <ul><c:forEach items='${tweets}' var='tweet'><li><img src='${tweet.profileImageUrl}' align='middle'/><c:out value='${tweet.createdAt}'/><br/><c:out value='${tweet.text}' escapeXml='false'/></li></c:forEach> </ul>

    如果您實現了可選的錨標記格式,那么這里要記住的關鍵是確保瀏覽器能夠獲取格式化的TweetHTML。 這可以通過使用c:out標記的escapeXml ='false'屬性或將$ {tweet.text}直接放入JSP中來實現。

    在此示例中,我沒有包含任何樣式或花哨的前端,因此,如果您運行代碼2 ,則應獲得以下內容:

    這就完成了我對Spring Social的簡單介紹,但是仍然有很多基礎。 在我的下一個博客中,我將了解背景情況。

    1我猜想這里有很多隱私和數據保護合法性問題要考慮,尤其是如果您使用此API存儲用戶數據時,我希望對此發表評論和意見。

    2該代碼可在GitHub上的git項目中的git://github.com/roghughe/captaindebug.git上找到。

    參考:來自Captain Debug博客博客的JCG合作伙伴 Roger Hughes的Spring Social入門 。


    翻譯自: https://www.javacodegeeks.com/2012/06/getting-started-with-spring-social.html

    spring social

    總結

    以上是生活随笔為你收集整理的spring social_Spring Social入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。