最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring boot配置多個請求服務(wù)代理的完整步驟

 更新時間:2019年11月17日 09:39:42   作者:JAVA碼上飄  
這篇文章主要給大家介紹了關(guān)于spring boot配置多個請求服務(wù)代理的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

springboot 配置服務(wù)代理

有時候,我們可能有下邊這樣的需求:

即,針對于分布式服務(wù),我們會有多種業(yè)務(wù)接口服務(wù),但是服務(wù)器上可能只要求開放一個服務(wù)的端口,比如上圖的restA項目端口是對外開放的,但是restB項目端口并未對外開放,這樣帶來的問題就是,用戶無法直接請求restB項目。

那就想到了可以通過訪問restA ,請求路徑符合一定規(guī)范的時候,比如http://ip:port/test ,當請求中以rest 開頭時,可以再轉(zhuǎn)發(fā)請求到restB 項目中即可。

當然代理轉(zhuǎn)發(fā) ,有很多的解決辦法,nginx 、zuul 等都可以實現(xiàn),但是nginx 雖然簡單,但是總要多裝一個服務(wù);zuul 配置較為麻煩。

經(jīng)過百度后,發(fā)現(xiàn)了一個特別簡單的配置,即這里要說的東西,ServletRegistrationBean的注入,相當于是引入servlet ,沒有具體看過 。

下面寫一下配置步驟:

1、項目結(jié)構(gòu)及介紹

下面是我的項目結(jié)構(gòu),以下選中藍色的項目為我們要配置的項目,其他的項目先忽略,是我們基于dubbo 和zookeeper 配置的時候用的。

項目已放到GitHub 上,下載項目GitHub地址 

 

關(guān)于這個項目的介紹是下邊這樣的,再配張圖來介紹下:


上圖中關(guān)于suiteoneservice 、suitetwoservice、masterservice 項目是我們的服務(wù)接口發(fā)布方項目。在這里我只是畫出來,跟我們要配置的內(nèi)容是無關(guān)的。

suiteone 、suitetwo 項目端口沒有外放,用戶不能直接訪問,而master項目是可以直接訪問的,所以用戶是通過訪問master 項目,再由master 項目對請求代理轉(zhuǎn)發(fā)到這兩個項目中。

2、具體配置步驟

主要的配置很少,都在master 項目中。

(1)引入依賴:

 <!--ProxyFilter的引入依賴-->
 <dependency>
  <groupId>org.mitre.dsmiley.httpproxy</groupId>
  <artifactId>smiley-http-proxy-servlet</artifactId>
  <version>1.7</version>
 </dependency>

(2)、配置一個配置類:

該類可以參照下載下來的,master 項目中的配置。

package microservice.sc.config;

import org.mitre.dsmiley.httpproxy.ProxyServlet;
import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
/**
 * Created by lsf on 2018/7/31.
 */
@Configuration
public class ProxyServletConfiguration implements EnvironmentAware {
 @Bean
 public ServletRegistrationBean servletRegistrationBean(){
 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_one"));
 //這個setName必須要設(shè)置,并且多個的時候,名字需要不一樣
 servletRegistrationBean.setName("suitone");
 servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_one"));
 servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false"));
 return servletRegistrationBean;
 }

 @Bean
 public ServletRegistrationBean servletRegistrationBean2(){
 ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), propertyResolver.getProperty("servlet_url_two"));
 //這個setName必須要設(shè)置,并且多個的時候,名字需要不一樣
 servletRegistrationBean.setName("suittwo");
 servletRegistrationBean.addInitParameter("targetUri", propertyResolver.getProperty("target_url_two"));
 servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, propertyResolver.getProperty("logging_enabled", "false"));
 return servletRegistrationBean;
 }

 private RelaxedPropertyResolver propertyResolver;

 @Override
 public void setEnvironment(Environment environment) {
 this.propertyResolver = new RelaxedPropertyResolver(environment, "proxy.test.");
 }
}

(3)、配置代理地址:

到master 項目的主配置文件,即application.properties 文件中,加入以下內(nèi)容:

#請求testone時代理轉(zhuǎn)發(fā)到30001項目中
proxy.test.servlet_url_one=/testone/*
proxy.test.target_url_one=http://localhost:30001

#請求testtwo時代理轉(zhuǎn)發(fā)到30002項目中
proxy.test.servlet_url_two=/testtwo/*
proxy.test.target_url_two=http://localhost:30002

上邊的配置簡單介紹一下,對于testone/* 這樣的寫法,意思就是當你的請求路徑以testone 開頭,比如http://localhost:30000/testone/test/get1 這樣的路徑,它請求的真實路徑是http://localhost:30001/test/get1 。主要就是將testone 替換成對應(yīng)的被代理路徑而已,* 的意思就是實際請求項目中接口的路徑?。?!

30001 端口即suiteone項目,30002 端口即suitetwo 項目,下載項目之后,分別啟動master 、suiteone 、suitetwo 項目的啟動類,啟動完成后,訪問http://localhost:30000/testone/test/get1 ,即會返回suiteone 項目test/get1 接口的內(nèi)容。

這種配置對get 、post 請求都有效。

以上即是完整的配置內(nèi)容。

如果有不懂的,可以下載下來項目看一下。GitHub地址

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • SpringBoot中的事務(wù)處理問題

    SpringBoot中的事務(wù)處理問題

    這篇文章主要介紹了SpringBoot中的事務(wù)處理問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java中的內(nèi)部類內(nèi)部接口用法說明

    java中的內(nèi)部類內(nèi)部接口用法說明

    這篇文章主要介紹了java中的內(nèi)部類內(nèi)部接口用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java多線程 ReentrantReadWriteLock原理及實例詳解

    Java多線程 ReentrantReadWriteLock原理及實例詳解

    這篇文章主要介紹了Java多線程 ReentrantReadWriteLock原理及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • java?cpu飆升問題的詳細分析和處理方法

    java?cpu飆升問題的詳細分析和處理方法

    Java中CPU占用過高是一個常見的問題,可能是由于線程過多、死循環(huán)、長時間的阻塞、死鎖、GC頻繁等原因?qū)е碌?這篇文章主要介紹了java?cpu飆升問題的詳細分析和處理方法,需要的朋友可以參考下
    2025-03-03
  • java 數(shù)據(jù)結(jié)構(gòu)單鏈表的實現(xiàn)

    java 數(shù)據(jù)結(jié)構(gòu)單鏈表的實現(xiàn)

    這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)單鏈表的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java 并發(fā)編程學(xué)習(xí)筆記之核心理論基礎(chǔ)

    Java 并發(fā)編程學(xué)習(xí)筆記之核心理論基礎(chǔ)

    編寫優(yōu)質(zhì)的并發(fā)代碼是一件難度極高的事情。Java語言從第一版本開始內(nèi)置了對多線程的支持,這一點在當年是非常了不起的,但是當我們對并發(fā)編程有了更深刻的認識和更多的實踐后,實現(xiàn)并發(fā)編程就有了更多的方案和更好的選擇。本文是對并發(fā)編程的核心理論做了下小結(jié)
    2016-05-05
  • Java隨機生成驗證碼的實現(xiàn)示例

    Java隨機生成驗證碼的實現(xiàn)示例

    這篇文章主要介紹Java隨機生成驗證碼的實現(xiàn)方法,文中有相關(guān)的實現(xiàn)代碼供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2023-08-08
  • springboot使用jasypt對配置文件加密加密數(shù)據(jù)庫連接的操作代碼

    springboot使用jasypt對配置文件加密加密數(shù)據(jù)庫連接的操作代碼

    這篇文章主要介紹了springboot使用jasypt對配置文件加密加密數(shù)據(jù)庫連接的操作代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 解決idea爆紅 cant resolve symbol String的問題解析

    解決idea爆紅 cant resolve symbol String的問題解析

    連著出差幾個禮拜沒有使用idea開發(fā)工具,突然一天打開電腦發(fā)現(xiàn)idea里的代碼全部爆紅,懵逼不如所措,很多朋友建議我按住Alt+回車設(shè)置jdk就能解決,但是仍然報錯,經(jīng)過幾個小時的倒騰最終解決,遇到此問題的朋友參考下本文吧
    2021-06-06
  • Java 批量刪除Word中的空白段落示例代碼

    Java 批量刪除Word中的空白段落示例代碼

    這篇文章主要介紹了Java 批量刪除Word中的空白段落,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11

最新評論

尼勒克县| 松滋市| 枣庄市| 登封市| 天祝| 武陟县| 祁连县| 内乡县| 灌云县| 崇仁县| 霍州市| 仙游县| 上杭县| 新邵县| 商城县| 松潘县| 正定县| 商南县| 墨脱县| 张家界市| 马山县| 高州市| 西丰县| 桑日县| 监利县| 拜城县| 丰县| 砚山县| 中方县| 疏附县| 墨脱县| 龙游县| 万源市| 苍南县| 洪雅县| 湘潭市| 册亨县| 白山市| 滕州市| 永济市| 民丰县|