From 8064c634a47a4b571ac793c2e4a53f469dcdd820 Mon Sep 17 00:00:00 2001 From: Tang Cheng Date: Mon, 22 Jul 2019 14:04:40 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=20resttemplate=20=E4=BB=A3?= =?utf8?q?=E7=90=86=E9=85=8D=E7=BD=AE,=E6=94=AF=E6=8C=81=20http=20,=20sock?= =?utf8?q?s5=20=E4=B8=A4=E7=A7=8D=EF=BC=8C=E9=80=9A=E8=BF=87=E9=85=8D?= =?utf8?q?=E7=BD=AE=20resttemplate.proxy.{host,=20port,=20type}=20?= =?utf8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- config/application-devel-pg-local.properties | 3 +++ .../com/supwisdom/dlpay/PayApiApplication.kt | 26 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/config/application-devel-pg-local.properties b/config/application-devel-pg-local.properties index 6fa530bf..3b2dd4ad 100644 --- a/config/application-devel-pg-local.properties +++ b/config/application-devel-pg-local.properties @@ -29,3 +29,6 @@ shopbalance.updater.cron=- spring.cloud.consul.enabled=false spring.cloud.consul.host=172.28.201.70 spring.cloud.consul.port=8500 +resttemplate.proxy.type=http +resttemplate.proxy.host=127.0.0.1 +resttemplate.proxy.port=1087 diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt index 7e2fb15d..e256b064 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt @@ -5,10 +5,12 @@ import io.lettuce.core.ReadFrom import net.javacrumbs.shedlock.core.LockProvider import net.javacrumbs.shedlock.provider.redis.spring.RedisLockProvider import org.springframework.beans.factory.annotation.Autowired +import org.springframework.beans.factory.annotation.Value import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.autoconfigure.data.redis.RedisProperties import org.springframework.boot.builder.SpringApplicationBuilder +import org.springframework.boot.context.properties.ConfigurationProperties import org.springframework.boot.web.servlet.ServletComponentScan import org.springframework.boot.web.servlet.support.SpringBootServletInitializer import org.springframework.cache.annotation.EnableCaching @@ -28,7 +30,10 @@ import org.springframework.data.redis.serializer.StringRedisSerializer import org.springframework.http.client.ClientHttpRequestFactory import org.springframework.http.client.SimpleClientHttpRequestFactory import org.springframework.scheduling.annotation.EnableScheduling +import org.springframework.stereotype.Component import org.springframework.web.client.RestTemplate +import java.net.InetSocketAddress +import java.net.Proxy @Configuration @@ -79,11 +84,30 @@ class HttpSessionConfig { @Configuration class RestTemplateConfig { + @Component + @ConfigurationProperties("resttemplate.proxy") + class RestTemplateProxyConfig { + @Value("\${type:}") + lateinit var type: String + @Value("\${host:}") + lateinit var host: String + @Value("\${port:0}") + var port: Int = 0 + } + @Bean - fun simpleClientHttpRequestFactory(): SimpleClientHttpRequestFactory { + fun simpleClientHttpRequestFactory(proxyConfig: RestTemplateProxyConfig): SimpleClientHttpRequestFactory { val factory = SimpleClientHttpRequestFactory() factory.setConnectTimeout(15000) factory.setReadTimeout(5000) + if (proxyConfig.type.isNotEmpty()) { + val proxyType = when (proxyConfig.type) { + "http" -> Proxy.Type.HTTP + "socks5" -> Proxy.Type.SOCKS + else -> Proxy.Type.DIRECT + } + factory.setProxy(Proxy(proxyType, InetSocketAddress(proxyConfig.host, proxyConfig.port))) + } return factory } -- 2.17.1