Διαμορφώστε άμεσα και μέσω διαμεσολαβητή beans RestTemplate στο Spring
Δημιουργήστε ξεχωριστά beans RestTemplate για διαμεσολαβητή HTTP και για ρητά άμεση σύνδεση JDK, αντί να εναλλάσσετε μια κοινή διαδρομή γύρω από μεμονωμένες κλήσεις.
Ορισμένες κλήσεις πρέπει να χρησιμοποιούν τον εταιρικό διαμεσολαβητή, ενώ μια άλλη υπηρεσία προσεγγίζεται άμεσα. Δώστε σε αυτές τις διαδρομές ξεχωριστά στιγμιότυπα RestTemplate αντί να μεταβάλλετε ένα κοινό εργοστάσιο όσο τα αιτήματα μπορεί να επικαλύπτονται.
Μέσα σε μια υπάρχουσα κλάση διαμόρφωσης 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);
}
Για το εργοστάσιο αιτημάτων JDK του Spring 6.2, το Proxy.NO_PROXY παρέχει ρητή πολιτική άμεσης σύνδεσης. Αν αφήσετε τον διαμεσολαβητή του εργοστασίου μη ορισμένο, επιτρέπεται αντ' αυτού η συνήθης διαδρομή διαμόρφωσης URLConnection, η οποία μπορεί να επιλέξει διαμεσολαβητή JVM.
Χρησιμοποιήστε @Qualifier στο σημείο έγχυσης για να επιλέξετε το απαιτούμενο bean, για παράδειγμα @Qualifier("directRestTemplate") RestTemplate rest. Η απλή δήλωση των δύο beans δεν επιλέγει μεταξύ τους για μια διφορούμενη εξάρτηση.
Αυτό το παράδειγμα επιλέγει διαμεσολαβητή HTTP χωρίς έλεγχο ταυτότητας. Μια μεταφορά που χρειάζεται έλεγχο ταυτότητας διαμεσολαβητή μπορεί να κατασκευαστεί ξεχωριστά με τον υποστηριζόμενο πάροχο διαπιστευτηρίων της, διατηρώντας την ίδια διάταξη επιλογής beans. Για Spring 6 με Apache HttpClient 5, περιορίστε αυτόν τον πάροχο στο τελικό σημείο του διαμεσολαβητή.
Άλλοι παρεμβολείς ή εργοστάσια αιτημάτων που εγκαθιστά σκόπιμα η εφαρμογή εξακολουθούν να ανήκουν στη δική της διαμόρφωση πελάτη. Κρατήστε τα με τη διαδρομή που τα χρειάζεται πραγματικά.