Spring ನಲ್ಲಿ ನೇರ ಮತ್ತು ಪ್ರಾಕ್ಸಿ RestTemplate ಬೀನ್ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ
ಪ್ರತಿ ಕರೆಯ ಸುತ್ತ ಹಂಚಿಕೆಯ ಮಾರ್ಗವನ್ನು ಬದಲಿಸುವ ಬದಲು HTTP ಪ್ರಾಕ್ಸಿ ಮತ್ತು ಸ್ಪಷ್ಟ ನೇರ JDK ಸಂಪರ್ಕಕ್ಕಾಗಿ ಪ್ರತ್ಯೇಕ RestTemplate ಬೀನ್ಗಳನ್ನು ರಚಿಸಿ.
ಕೆಲವು ಕರೆಗಳು ಕಾರ್ಪೊರೇಟ್ ಪ್ರಾಕ್ಸಿ ಬಳಸಬೇಕು, ಇನ್ನೊಂದು ಸೇವೆಯನ್ನು ನೇರವಾಗಿ ತಲುಪಲಾಗುತ್ತದೆ. ವಿನಂತಿಗಳು ಓವರ್ಲ್ಯಾಪ್ ಆಗಬಹುದಾದ್ದರಿಂದ ಒಂದು ಹಂಚಿಕೆಯ ಫ್ಯಾಕ್ಟರಿಯನ್ನು ಬದಲಿಸುವ ಬದಲು ಆ ಮಾರ್ಗಗಳಿಗೆ ಪ್ರತ್ಯೇಕ 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);
}
Spring 6.2 ನ JDK ವಿನಂತಿ ಫ್ಯಾಕ್ಟರಿಗೆ, Proxy.NO_PROXY ಸ್ಪಷ್ಟ ನೇರ ಸಂಪರ್ಕ ನೀತಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಫ್ಯಾಕ್ಟರಿಯ ಪ್ರಾಕ್ಸಿಯನ್ನು ಸೆಟ್ ಮಾಡದೆ ಬಿಟ್ಟರೆ, ಬದಲಿಗೆ ಸಾಮಾನ್ಯ URLConnection ಕಾನ್ಫಿಗರೇಶನ್ ಮಾರ್ಗಕ್ಕೆ ಅನುಮತಿ ಸಿಗುತ್ತದೆ, ಅದು JVM ಪ್ರಾಕ್ಸಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು.
ಅಗತ್ಯವಿರುವ ಬೀನ್ ಆಯ್ಕೆ ಮಾಡಲು ಇಂಜೆಕ್ಷನ್ ಪಾಯಿಂಟ್ನಲ್ಲಿ @Qualifier ಬಳಸಿ, ಉದಾಹರಣೆಗೆ @Qualifier("directRestTemplate") RestTemplate rest. ಕೇವಲ ಎರಡು ಬೀನ್ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು ಅಸ್ಪಷ್ಟ ಅವಲಂಬನೆಗೆ ಅವುಗಳ ನಡುವೆ ಆಯ್ಕೆ ಮಾಡುವುದಿಲ್ಲ.
ಈ ಉದಾಹರಣೆ ದೃಢೀಕರಣವಿಲ್ಲದ HTTP ಪ್ರಾಕ್ಸಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. ಪ್ರಾಕ್ಸಿ ದೃಢೀಕರಣ ಬೇಕಾದ ಸಾಗಣೆಯನ್ನು ಅದೇ ಬೀನ್-ಆಯ್ಕೆ ವ್ಯವಸ್ಥೆಯನ್ನು ಉಳಿಸಿಕೊಂಡು ಅದರ ಬೆಂಬಲಿತ ರುಜುವಾತು ಪೂರೈಕೆದಾರರೊಂದಿಗೆ ಪ್ರತ್ಯೇಕವಾಗಿ ನಿರ್ಮಿಸಬಹುದು. Apache HttpClient 5 ನೊಂದಿಗೆ Spring 6 ಗಾಗಿ, ಆ ಪೂರೈಕೆದಾರರನ್ನು ಪ್ರಾಕ್ಸಿ ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ಸೀಮಿತಗೊಳಿಸಿ.
ಅಪ್ಲಿಕೇಶನ್ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಸ್ಥಾಪಿಸುವ ಇತರ ಇಂಟರ್ಸೆಪ್ಟರ್ಗಳು ಅಥವಾ ವಿನಂತಿ ಫ್ಯಾಕ್ಟರಿಗಳು ಇನ್ನೂ ಅದರ ಸ್ವಂತ ಕ್ಲೈಂಟ್ ಕಾನ್ಫಿಗರೇಶನ್ಗೆ ಸೇರುತ್ತವೆ. ಅವುಗಳಿಗೆ ನಿಜವಾಗಿ ಅಗತ್ಯವಿರುವ ಮಾರ್ಗದೊಂದಿಗೆ ಅವುಗಳನ್ನು ಇರಿಸಿ.