鎺堟潈鏈嶅姟鏄熀浜嶴pring Security鐨勶紝鍥犳闇瑕佸湪欏圭洰涓紩鍏ヤ袱涓緷璧栵細
鍓嶈呬負 Security錛屽悗鑰呬負Security鐨凮Auth2鎵╁睍銆?/p>
鍦ㄥ惎鍔ㄧ被涓坊鍔?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">@EnableAuthorizationServer娉ㄨВ錛?br />
瀹屾垚榪欎簺鎴戜滑鐨勬巿鏉冩湇鍔℃渶鍩烘湰鐨勯鏋跺氨宸茬粡鎼緩瀹屾垚浜嗐備絾鏄鎯寵窇閫氭暣涓祦紼嬶紝鎴戜滑蹇呴』鍒嗛厤 client_id
, client_secret
鎵嶈銆係pring Security OAuth2鐨勯厤緗柟娉曟槸緙栧啓@Configuration
綾葷戶鎵?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">AuthorizationServerConfigurerAdapter錛岀劧鍚庨噸鍐?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">void configure(ClientDetailsServiceConfigurer clients)鏂規硶錛屽錛?br />
璁塊棶鎺堟潈欏甸潰錛?br />
姝ゆ椂嫻忚鍣ㄤ細璁╀綘杈撳叆鐢ㄦ埛鍚嶅瘑鐮侊紝榪欐槸鍥犱負 Spring Security 鍦ㄩ粯璁ゆ儏鍐典笅浼氬鎵鏈塙RL娣誨姞Basic Auth璁よ瘉銆傞粯璁ょ殑鐢ㄦ埛鍚嶄負user
, 瀵嗙爜鏄殢鏈虹敓鎴愮殑錛屽湪鎺у埗鍙版棩蹇椾腑鍙互鐪嬪埌銆?/p>
鐢婚铏界劧寰堢畝闄嬶紝浣嗘槸鍩烘湰鍔熻兘閮藉叿澶囦簡銆傜偣鍑?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">Authorize鍚庯紝嫻忚鍣ㄥ氨浼氶噸瀹氬悜鍒扮櫨搴︼紝騫跺甫涓?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">code鍙傛暟錛?/p>
鎷垮埌code
浠ュ悗錛屽氨鍙互璋冪敤
鏉ユ崲鍙?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">access_token浜嗭細
榪斿洖濡備笅錛?br />
鍒版鎴戜滑鏈鏈鍩烘湰鐨勬巿鏉冩湇鍔″氨鎼緩瀹屾垚浜嗐傜劧鑰岋紝榪欎粎浠呮槸涓猟emo錛屽鏋滆鍦ㄧ敓浜х幆澧冧腑浣跨敤錛岃繕闇瑕佸仛鏇村鐨勫伐浣溿?/p>
鎶婃巿鏉冩湇鍔″櫒涓殑鏁版嵁瀛樺偍鍒版暟鎹簱涓茍涓嶉毦錛屽洜涓?Spring Cloud Security OAuth 宸茬粡涓烘垜浠璁″ソ浜嗕竴濂桽chema鍜屽搴旂殑DAO瀵硅薄銆備絾鍦ㄤ嬌鐢ㄤ箣鍓嶏紝鎴戜滑闇瑕佸厛瀵圭浉鍏崇殑綾繪湁涓瀹氱殑浜嗚В銆?/p>
Spring Cloud Security OAuth2閫氳繃DefaultTokenServices
綾繪潵瀹屾垚token鐢熸垚銆佽繃鏈熺瓑 OAuth2 鏍囧噯瑙勫畾鐨勪笟鍔¢昏緫錛岃?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">DefaultTokenServices鍙堟槸閫氳繃TokenStore
鎺ュ彛瀹屾垚瀵圭敓鎴愭暟鎹殑鎸佷箙鍖栥傚湪涓婇潰鐨刣emo涓紝TokenStore
鐨勯粯璁ゅ疄鐜頒負InMemoryTokenStore
錛屽嵆鍐呭瓨瀛樺偍銆?瀵逛簬Client淇℃伅錛?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">ClientDetailsService鎺ュ彛璐熻矗浠庡瓨鍌ㄤ粨搴撲腑璇誨彇鏁版嵁錛屽湪涓婇潰鐨刣emo涓粯璁や嬌鐢ㄧ殑涔熸槸InMemoryClientDetialsService
瀹炵幇綾匯傝鍒拌繖閲屽氨鑳界湅鍑猴紝瑕佹兂浣跨敤鏁版嵁搴撳瓨鍌紝鍙渶瑕佹彁渚涜繖浜涙帴鍙g殑瀹炵幇綾誨嵆鍙傚簡騫哥殑鏄紝妗嗘灦宸茬粡涓烘垜浠啓濂絁DBC瀹炵幇浜嗭紝鍗?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">JdbcTokenStore鍜?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">JdbcClientDetailsService銆?/p>
瑕佹兂浣跨敤榪欎簺JDBC瀹炵幇錛岄鍏堣寤鴻〃銆傛鏋朵負鎴戜滑鎻愬墠璁捐濂戒簡schema, 鍦╣ithub涓婏細https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql
鍦ㄤ嬌鐢ㄨ繖濂楄〃緇撴瀯涔嬪墠瑕佹敞鎰忕殑鏄紝瀵逛簬MySQL鏉ヨ錛岄粯璁ゅ緩琛ㄨ鍙ヤ腑涓婚敭鏄痸archar(255)綾誨瀷錛屽湪mysql涓墽琛屼細鎶ラ敊錛屽師鍥犳槸mysql瀵箆archar涓婚敭闀垮害鏈夐檺鍒躲傛墍浠ヨ繖閲屾敼鎴?28鍗沖彲銆傚叾嬈★紝璇彞涓細鏈夋煇浜涘瓧孌典負LONGVARBINARY
綾誨瀷錛屽畠瀵瑰簲mysql鐨?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">blob綾誨瀷錛屼篃闇瑕佷慨鏀逛竴涓嬨?/p>
鏁版嵁搴撳緩濂藉悗錛屼笅涓姝ュ氨鏄厤緗鏋朵嬌鐢↗DBC瀹炵幇銆傛柟娉曡繕鏄紪鍐?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">@Configuration綾葷戶鎵?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">AuthorizationServerConfigurerAdapter錛?br />
瀹屾垚榪欎簺鍚庯紝妗嗘灦灝變細灝嗕腑闂翠駭鐢熺殑鏁版嵁鍐欏埌mysql涓簡銆?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">oauth_client_details鏄痗lient琛紝鍙互鐩存帴鍦ㄨ琛ㄤ腑娣誨姞璁板綍鏉ユ坊鍔燾lient:
榪欓噷涓嶅緱涓嶈 Spring 璁捐鏈変竴涓钁╁湴鐨勬柟銆傛敞鎰忕湅oauth_access_token
琛ㄦ槸瀛樻斁璁塊棶浠ょ墝鐨勶紝浣嗘槸騫舵病鏈夌洿鎺ュ湪瀛楁涓瓨鏀総oken銆係pring 浣跨敤OAuth2AccessToken
鏉ユ娊璞′笌浠ょ墝鏈夊叧鐨勬墍鏈夊睘鎬э紝鍦ㄥ啓鍏ュ埌鏁版嵁搴撴椂錛?strong style="box-sizing: border-box; margin: 0px; padding: 0px; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">Spring灝嗚瀵硅薄閫氳繃JDK鑷甫鐨勫簭鍒楀寲鏈哄埗搴忓垪鎴愬瓧鑺?/strong>鐩存帴淇濆瓨鍒頒簡璇ヨ〃鐨?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">token瀛楁涓備篃灝辨槸璇達紝濡傛灉鍙湅鏁版嵁琛ㄤ綘鏄湅涓嶅嚭access_token
鐨勫兼槸澶氬皯錛岃繃鏈熸椂闂寸瓑淇℃伅鐨勩傝繖灝辯粰璧勬簮鏈嶅姟鍣ㄧ殑瀹炵幇甯︽潵浜嗛夯鐑︺傛垜浠殑璧勬簮鎻愪緵鏂瑰茍娌℃湁浣跨敤Spring Security錛屼篃涓嶆兂寮曞叆 Spring Security 鐨勪換浣曚緷璧栵紝榪欐椂鍊欏氨鍙兘灝?nbsp;DefaultOAuth2AccessToken
鐨勬簮鐮乧opy鍒拌祫婧愭彁渚涙柟鐨勯」鐩腑錛岀劧鍚庤鍙?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">token瀛楁騫跺弽搴忓垪鍖栬繕鍘熷璞℃潵鑾峰彇token淇℃伅銆備絾鏄鏋滆繖鏍峰仛榪樹細閬囧埌鍙嶅簭鍒楀寲鍏煎鎬х殑闂錛屽叿浣撹В鍐蟲柟娉曞弬鑰冩垜鍙︿竴綃囧崥鏂?http://blog.csdn.net/neosmith/article/details/52539614
鑷蟲涓涓兘鍦ㄧ敓浜х幆澧冧笅浣跨敤鐨勬巿鏉冩湇鍔″氨鎼緩濂戒簡銆傚叾瀹炴垜浠湪瀹為檯浣跨敤鏃跺簲璇ラ傚綋瀹氬埗JdbcTokenStore
鎴?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">ClientDetailsService鏉ュ疄閫傚簲涓氬姟闇瑕侊紝鐢氳嚦鍙互鐩存帴浠?寮濮嬪疄鐜版帴鍙o紝瀹屽叏涓嶇敤妗嗘灦鎻愪緵鐨勫疄鐜般傚彟澶栵紝Spring 鐩存帴灝?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">DefaultOAuth2AccessToken搴忓垪鍖栨垚瀛楄妭淇濆瓨鍒版暟鎹簱涓殑璁捐錛屾垜璁や負鏄潪甯鎬笉鍚堢悊鐨勩傛垨璁歌璁¤呯殑鍒濊》鏄繚瀵?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">access_token錛屼絾鏄氳繃鍔犲瘑鐨勬柟娉曚篃鍙互瀹炵幇錛屽畬鍏ㄤ笉搴旇鐩存帴鎵斿瓧鑺傘備笉榪囬氳繃瀹氬埗TokenStore
鎺ュ彛錛屾垜浠彲浠ヤ嬌鐢ㄨ嚜宸辯殑琛ㄧ粨鏋勮屼笉鎷樻償浜庨粯璁ゅ疄鐜般?br />
http://blog.csdn.net/tracker_w/article/category/6360121
http://blog.csdn.net/neosmith/article/details/52539927
Feign鏄竴縐嶅0鏄庡紡銆佹ā鏉垮寲鐨凥TTP瀹㈡埛绔傚湪Spring Cloud涓嬌鐢‵eign, 鎴戜滑鍙互鍋氬埌浣跨敤HTTP璇鋒眰榪滅▼鏈嶅姟鏃惰兘涓庤皟鐢ㄦ湰鍦版柟娉曚竴鏍風殑緙栫爜浣撻獙錛屽紑鍙戣呭畬鍏ㄦ劅鐭ヤ笉鍒拌繖鏄繙紼嬫柟娉曪紝鏇存劅鐭ヤ笉鍒拌繖鏄釜HTTP璇鋒眰銆傛瘮濡傦細
寮鍙戣呴氳繃service.findByGroupId()
灝辮兘瀹屾垚鍙戦丠TTP璇鋒眰鍜岃В鐮丠TTP榪斿洖緇撴灉騫跺皝瑁呮垚瀵硅薄鐨勮繃紼嬨?/p>
涓轟簡璁〧eign鐭ラ亾鍦ㄨ皟鐢ㄦ柟娉曟椂搴旇鍚戝摢涓湴鍧鍙戣姹備互鍙婅姹傞渶瑕佸甫鍝簺鍙傛暟錛屾垜浠渶瑕佸畾涔変竴涓帴鍙o細
A: @FeignClient
鐢ㄤ簬閫氱煡Feign緇勪歡瀵硅鎺ュ彛榪涜浠g悊(涓嶉渶瑕佺紪鍐欐帴鍙e疄鐜?錛屼嬌鐢ㄨ呭彲鐩存帴閫氳繃@Autowired
娉ㄥ叆銆?/p>
B: @RequestMapping
琛ㄧず鍦ㄨ皟鐢ㄨ鏂規硶鏃墮渶瑕佸悜/group/{groupId}
鍙戦?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">GET璇鋒眰銆?/p>
C: @PathVariable
涓?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">SpringMVC涓搴旀敞瑙e惈涔夌浉鍚屻?/p>
Spring Cloud搴旂敤鍦ㄥ惎鍔ㄦ椂錛孎eign浼氭壂鎻忔爣鏈?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">@FeignClient娉ㄨВ鐨勬帴鍙o紝鐢熸垚浠g悊錛屽茍娉ㄥ唽鍒癝pring瀹瑰櫒涓傜敓鎴愪唬鐞嗘椂Feign浼氫負姣忎釜鎺ュ彛鏂規硶鍒涘緩涓涓?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">RequetTemplate瀵硅薄錛岃瀵硅薄灝佽浜咹TTP璇鋒眰闇瑕佺殑鍏ㄩ儴淇℃伅錛岃姹傚弬鏁板悕銆佽姹傛柟娉曠瓑淇℃伅閮芥槸鍦ㄨ繖涓繃紼嬩腑紜畾鐨勶紝Feign鐨勬ā鏉垮寲灝變綋鐜板湪榪欓噷銆?/p>
鍦ㄦ湰渚嬩腑錛屾垜浠皢Feign涓嶦ureka鍜孯ibbon緇勫悎浣跨敤錛?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">@FeignClient(name = "ea")鎰忎負閫氱煡Feign鍦ㄨ皟鐢ㄨ鎺ュ彛鏂規硶鏃惰鍚慐ureka涓煡璇㈠悕涓?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">ea鐨勬湇鍔★紝浠庤屽緱鍒版湇鍔RL銆?/p>
Feign灝嗘柟娉曠鍚嶄腑鏂規硶鍙傛暟瀵硅薄搴忓垪鍖栦負璇鋒眰鍙傛暟鏀懼埌HTTP璇鋒眰涓殑榪囩▼錛屾槸鐢辯紪鐮佸櫒(Encoder)瀹屾垚鐨勩傚悓鐞嗭紝灝咹TTP鍝嶅簲鏁版嵁鍙嶅簭鍒楀寲涓簀ava瀵硅薄鏄敱瑙g爜鍣?Decoder)瀹屾垚鐨勩?/p>
榛樿鎯呭喌涓嬶紝Feign浼氬皢鏍囨湁@RequestParam
娉ㄨВ鐨勫弬鏁拌漿鎹㈡垚瀛楃涓叉坊鍔犲埌URL涓紝灝嗘病鏈夋敞瑙g殑鍙傛暟閫氳繃Jackson杞崲鎴恓son鏀懼埌璇鋒眰浣撲腑銆傛敞鎰忥紝濡傛灉鍦?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">@RequetMapping涓殑method
灝嗚姹傛柟寮忔寚瀹氫負POST
錛岄偅涔堟墍鏈夋湭鏍囨敞瑙g殑鍙傛暟灝嗕細琚拷鐣ワ紝渚嬪錛?br />
姝ゆ椂鍥犱負澹版槑鐨勬槸GET璇鋒眰娌℃湁璇鋒眰浣擄紝鎵浠?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">obj鍙傛暟灝變細琚拷鐣ャ?/p>
鍦⊿pring Cloud鐜涓嬶紝Feign鐨凟ncoder*鍙細鐢ㄦ潵緙栫爜娌℃湁娣誨姞娉ㄨВ鐨勫弬鏁?銆傚鏋滀綘鑷畾涔変簡Encoder, 閭d箞鍙湁鍦ㄧ紪鐮?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">obj鍙傛暟鏃舵墠浼氳皟鐢ㄤ綘鐨凟ncoder銆傚浜嶥ecoder, 榛樿浼氬鎵樼粰SpringMVC涓殑MappingJackson2HttpMessageConverter
綾昏繘琛岃В鐮併傚彧鏈夊綋鐘舵佺爜涓嶅湪200 ~ 300涔嬮棿鏃禘rrorDecoder鎵嶄細琚皟鐢ㄣ侲rrorDecoder鐨勪綔鐢ㄦ槸鍙互鏍規嵁HTTP鍝嶅簲淇℃伅榪斿洖涓涓紓甯革紝璇ュ紓甯稿彲浠ュ湪璋冪敤Feign鎺ュ彛鐨勫湴鏂硅鎹曡幏鍒般傛垜浠洰鍓嶅氨閫氳繃ErrorDecoder鏉ヤ嬌Feign鎺ュ彛鎶涘嚭涓氬姟寮傚父浠ヤ緵璋冪敤鑰呭鐞嗐?/p>
Feign鍦ㄩ粯璁ゆ儏鍐典笅浣跨敤鐨勬槸JDK鍘熺敓鐨?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">URLConnection鍙戦丠TTP璇鋒眰錛屾病鏈夎繛鎺ユ睜錛屼絾鏄姣忎釜鍦板潃浼氫繚鎸佷竴涓暱榪炴帴錛屽嵆鍒╃敤HTTP鐨?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">persistence connection 銆傛垜浠彲浠ョ敤Apache鐨凥TTP Client鏇挎崲Feign鍘熷鐨刪ttp client, 浠庤岃幏鍙栬繛鎺ユ睜銆佽秴鏃舵椂闂寸瓑涓庢ц兘鎭伅鐩稿叧鐨勬帶鍒惰兘鍔涖係pring Cloud浠?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">Brixtion.SR5鐗堟湰寮濮嬫敮鎸佽繖縐嶆浛鎹紝棣栧厛鍦ㄩ」鐩腑澹版槑Apache HTTP Client鍜?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">feign-httpclient渚濊禆錛?br />
鐒跺悗鍦?code style="box-sizing: border-box; font-family: "Source Code Pro", monospace; font-size: 13.5px; padding: 2px 4px; color: #3f3f3f; white-space: nowrap; border-radius: 0px; margin: 0px; border: 0px; outline: 0px; vertical-align: baseline; word-break: break-word; background: rgba(128, 128, 128, 0.0745098);">application.properties涓坊鍔狅細
閫氳繃Feign錛?鎴戜滑鑳芥妸HTTP榪滅▼璋冪敤瀵瑰紑鍙戣呭畬鍏ㄩ忔槑錛屽緱鍒頒笌璋冪敤鏈湴鏂規硶涓鑷寸殑緙栫爜浣撻獙銆傝繖涓鐐逛笌闃塊噷Dubbo涓毚闇茶繙紼嬫湇鍔$殑鏂瑰紡綾諱技錛屽尯鍒湪浜嶥ubbo鏄熀浜庣鏈変簩榪涘埗鍗忚錛岃孎eign鏈川涓婅繕鏄釜HTTP瀹㈡埛绔傚鏋滄槸鍦ㄧ敤Spring Cloud Netflix鎼緩寰湇鍔★紝閭d箞Feign鏃犵枒鏄渶浣抽夋嫨銆?br />
http://blog.csdn.net/tracker_w/article/category/6360121
http://blog.csdn.net/neosmith/article/details/52449921