Nekateri klici morajo uporabljati podjetniški posrednik, medtem ko je druga storitev dosegljiva neposredno. Tem potem dodelite ločene primerke RestTemplate, namesto da spreminjate eno skupno tovarno, medtem ko se zahteve lahko prekrivajo.

Znotraj obstoječega konfiguracijskega razreda Spring:

@Bean("directRestTemplate")
RestTemplate directRestTemplate() {
    var factory = new SimpleClientHttpRequestFactory();
    factory.setProxy(java.net.Proxy.NO_PROXY);
    return new RestTemplate(factory);
}

@Bean("proxyRestTemplate")
RestTemplate proxyRestTemplate() {
    var factory = new SimpleClientHttpRequestFactory();
    factory.setProxy(new java.net.Proxy(
        java.net.Proxy.Type.HTTP,
        new java.net.InetSocketAddress("proxy.example", 8080)));
    return new RestTemplate(factory);
}

Za tovarno zahtev JDK v Springu 6.2 Proxy.NO_PROXY zagotavlja izrecno politiko neposredne povezave. Če posrednik tovarne ostane nenastavljen, se namesto tega dovoli običajna pot konfiguracije URLConnection, ki lahko izbere posrednik JVM.

Na mestu vbrizganja uporabite @Qualifier za izbiro potrebne bine, na primer @Qualifier("directRestTemplate") RestTemplate rest. Samo definiranje obeh binov pri dvoumnem odvisnosti ne izbira med njima.

Ta primer izbere HTTP posrednik brez preverjanja pristnosti. Prenos, ki potrebuje preverjanje pristnosti posrednika, je mogoče zgraditi ločeno z njegovim podprtim ponudnikom poverilnic, pri čemer ostane enaka ureditev izbire binov. Za Spring 6 z Apache HttpClient 5 omejite tega ponudnika na končno točko posrednika.

Drugi prestrezniki ali tovarne zahtev, ki jih aplikacija namerno namesti, še vedno spadajo k njeni lastni konfiguraciji odjemalca. Ohranite jih pri poti, ki jih resnično potrebuje.

Sorodni članki