增加 resttemplate 代理配置,支持 http , socks5 两种,通过配置 resttemplate.proxy.{host, port, type} 定义
diff --git a/config/application-devel-pg-local.properties b/config/application-devel-pg-local.properties
index 6fa530b..3b2dd4a 100644
--- a/config/application-devel-pg-local.properties
+++ b/config/application-devel-pg-local.properties
@@ -29,3 +29,6 @@
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 7e2fb15..e256b06 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 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.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 @@
@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
}