亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

springboot 配置服務(wù)代理

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

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

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

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

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

下面寫一下配置步驟:

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

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

項(xiàng)目已放到GitHub 上,下載項(xiàng)目GitHub地址 

 

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


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

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

2、具體配置步驟

主要的配置很少,都在master 項(xiàng)目中。

(1)引入依賴:

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

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

該類可以參照下載下來的,master 項(xiàng)目中的配置。

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"));
 //這個(gè)setName必須要設(shè)置,并且多個(gè)的時(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"));
 //這個(gè)setName必須要設(shè)置,并且多個(gè)的時(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 項(xiàng)目的主配置文件,即application.properties 文件中,加入以下內(nèi)容:

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

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

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

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

這種配置對(duì)get 、post 請(qǐng)求都有效。

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

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

總結(jié)

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

相關(guān)文章

  • 如何讀取properties或yml文件數(shù)據(jù)并匹配

    如何讀取properties或yml文件數(shù)據(jù)并匹配

    這篇文章主要介紹了如何讀取properties或yml文件數(shù)據(jù)并匹配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 詳解java 中Spring jsonp 跨域請(qǐng)求的實(shí)例

    詳解java 中Spring jsonp 跨域請(qǐng)求的實(shí)例

    這篇文章主要介紹了詳解java 中Spring jsonp 跨域請(qǐng)求的實(shí)例的相關(guān)資料,jsonp 可用于解決主流瀏覽器的跨域數(shù)據(jù)訪問的問題,需要的朋友可以參考下
    2017-08-08
  • Java 編程中十個(gè)處理異常的建議

    Java 編程中十個(gè)處理異常的建議

    這篇文章主要介紹了Java 編程中十個(gè)處理異常的建議,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 關(guān)于Lambda表達(dá)式的方法引用和構(gòu)造器引用簡(jiǎn)的單示例

    關(guān)于Lambda表達(dá)式的方法引用和構(gòu)造器引用簡(jiǎn)的單示例

    這篇文章主要介紹了關(guān)于Lambda表達(dá)式的方法引用和構(gòu)造器引用簡(jiǎn)的單示例,方法引用與構(gòu)造器引用可以使?Lambda?表達(dá)式的代碼塊更加簡(jiǎn)潔<BR>,需要的朋友可以參考下
    2023-04-04
  • JavaApi實(shí)現(xiàn)更新刪除及讀取節(jié)點(diǎn)

    JavaApi實(shí)現(xiàn)更新刪除及讀取節(jié)點(diǎn)

    這篇文章主要介紹了JavaApi實(shí)現(xiàn)更新刪除及讀取節(jié)點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • java中aop實(shí)現(xiàn)接口訪問頻率限制

    java中aop實(shí)現(xiàn)接口訪問頻率限制

    本文主要介紹了java中aop實(shí)現(xiàn)接口訪問頻率限制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java垃圾回收finalize()作用詳解

    Java垃圾回收finalize()作用詳解

    這篇文章主要為大家詳細(xì)介紹了Java垃圾回收finalize()作用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-09-09
  • 解決JDBC Connection Reset的問題分析

    解決JDBC Connection Reset的問題分析

    這篇文章主要介紹了解決JDBC Connection Reset的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring Cloud多個(gè)微服務(wù)之間調(diào)用代碼實(shí)例

    Spring Cloud多個(gè)微服務(wù)之間調(diào)用代碼實(shí)例

    這篇文章主要介紹了Spring Cloud多個(gè)微服務(wù)之間調(diào)用代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java開發(fā)環(huán)境配置教程(win7 64bit)

    Java開發(fā)環(huán)境配置教程(win7 64bit)

    這篇文章主要為大家詳細(xì)介紹了win7 64bit下Java開發(fā)環(huán)境的配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評(píng)論