ຕັ້ງຄ່າ bean RestTemplate ແບບກົງ ແລະ ຜ່ານ proxy ໃນ Spring
ສ້າງ bean RestTemplate ແຍກຕ່າງຫາກສຳລັບ proxy HTTP ແລະ ການເຊື່ອມຕໍ່ JDK ກົງໂດຍກົງ ແທນການສະຫຼັບເສັ້ນທາງຮ່ວມອ້ອມການເອີ້ນແຕ່ລະຄັ້ງ.
ການເອີ້ນບາງຄັ້ງຕ້ອງໃຊ້ proxy ຂອງອົງກອນ ໃນຂະນະທີ່ບໍລິການອື່ນເຂົ້າເຖິງໂດຍກົງ. ໃຫ້ instance 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 ໃຫ້ນະໂຍບາຍການເຊື່ອມຕໍ່ໂດຍກົງຢ່າງຊັດເຈນ. ການປະ proxy ຂອງໂຮງງານໄວ້ບໍ່ຕັ້ງຄ່າ ຈະອະນຸຍາດເສັ້ນທາງການຕັ້ງຄ່າ URLConnection ປົກກະຕິແທນ ເຊິ່ງອາດເລືອກ proxy ຂອງ JVM.
ໃຊ້ @Qualifier ຢູ່ຈຸດສັກຢາເພື່ອເລືອກ bean ທີ່ຕ້ອງການ ຕົວຢ່າງ @Qualifier("directRestTemplate") RestTemplate rest. ການພຽງແຕ່ກຳນົດ bean ສອງອັນ ບໍ່ໄດ້ເລືອກລະຫວ່າງພວກມັນສຳລັບການຂຶ້ນກັບທີ່ກຳກວມ.
ຕົວຢ່າງນີ້ເລືອກ proxy HTTP ທີ່ບໍ່ມີການພິສູດຢືນຢັນ. ການຂົນສົ່ງທີ່ຕ້ອງການການພິສູດຢືນຢັນ proxy ສາມາດສ້າງແຍກຕ່າງຫາກກັບຜູ້ໃຫ້ຂໍ້ມູນປະຈຳຕົວທີ່ຮອງຮັບ ໂດຍຮັກສາການຈັດການເລືອກ bean ດຽວກັນ. ສຳລັບ Spring 6 ກັບ Apache HttpClient 5, ຈຳກັດຜູ້ໃຫ້ນັ້ນໃຫ້ຢູ່ທີ່ຈຸດສຸດທ້າຍຂອງ proxy.
interceptor ຫຼືໂຮງງານຄຳຮ້ອງອື່ນໆ ທີ່ແອັບຯຕິດຕັ້ງໂດຍເຈດຕະນາ ຍັງເປັນຂອງການຕັ້ງຄ່າລູກຄ້າຂອງຕົວເອງ. ເກັບພວກມັນໄວ້ກັບເສັ້ນທາງທີ່ຕ້ອງການພວກມັນຕົວຈິງ.