如何将http
呼叫重定向到https
in spring-cloud-gateway
. 我已按照此链接中的说明在我的网关项目中配置了 https 。
现在 HTTPS 网址工作正常,但此外我需要将所有http
调用重定向到https
. 我试过这个
但这对我不起作用,因为我没有使用默认http
端口 8080,而且我的应用程序正在 Spring Security 上运行。
以下代码显示了如何重定向http
到https
,但我需要相同的Netty
服务器配置,因为spring-cloud-gateway
仅支持 netty ..
@Configuration
public class RedirectToHttpsConfig {
@Value("${server.port}")
private Integer httpsPort;
@Value("${server.http.port}")
private Integer httpPort;
/* ################ THIS WILL WORK FINE ################
################ IF YOU HAVE TOMCAT ################
################ AS EMBEDDED SERVER ################
*/
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个Spring Boot
应用程序,它将读取类似DB属性的配置Consul
.但是我无法使用我的应用程序从Consul读取键值.以下是我要做的事情.
**pom.xml**
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tuturself</groupId>
<artifactId>spring-boot-consul</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/>
</parent>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.retry.version>1.2.1.RELEASE</spring.retry.version>
<consul.version>1.1.2.RELEASE</consul.version>
<consul.discovery.version>1.1.2.RELEASE</consul.discovery.version>
<jackson.version>2.8.1</jackson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-all</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-consul-discovery</artifactId>
<version>${consul.discovery.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>${spring.retry.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
<build> …
Run Code Online (Sandbox Code Playgroud) spring-boot consul microservices spring-cloud spring-cloud-consul
我在我的微服务中使用了 spring-boot-acturator 进行健康检查。早些时候我的健康 API 是:
mydomain:healthPort/health
Run Code Online (Sandbox Code Playgroud)
其中已经与第三方健康检查客户端集成。现在将 spring-boot 版本升级到 spring-boot 2 后,我的健康 api 变为:
mydomain:healthPort/actuator/health
Run Code Online (Sandbox Code Playgroud)
有什么办法,因此我可以从健康检查api中删除执行器词。以下是我的健康检查配置:
management:
server:
context-path: /
port: 50186
health.diskspace.enabled: false
security:
enabled: false
endpoints:
enabled-by-default: false
endpoint:
health:
enabled: true
show-details: always
Run Code Online (Sandbox Code Playgroud) 我需要从逗号分隔的String创建枚举列表.我在属性文件中有一些配置,主要是列表HttpStatus
喜欢:
some.config=TOO_MANY_REQUESTS,GATEWAY_TIMEOUT,BAD_GATEWAY
Run Code Online (Sandbox Code Playgroud)
此配置可以绑定到LIST,如下所示:
@Value("#{'${some.config}'.split(',')}")
private List<HttpStatus> statuses;
Run Code Online (Sandbox Code Playgroud)
现在可以用我的一行代码完成.我收到的字符串如下:
@Bean(name = "somebean")
public void do(@Value("${some.config:}") String statuses) throws IOException {
private List<HttpStatus> sList = StringUtils.isEmpty(statuses) ?
globalSeries : **Arrays.asList(statuses.split("\\s*,\\s*"));**
}
Run Code Online (Sandbox Code Playgroud)
Arrays.asList(series.split( "\ S*,\ S*")); 将创建一个字符串列表,现在我可以创建一个枚举列表,否则我需要迭代临时列表然后创建一个枚举列表.
我正在使用 restTemplate 从远程服务器使用 json 数据,然后使用 jackson 解析我的 java 对象中的 json。我已通过 java 代码将所需的消息转换器添加到我的 restTemplate 中:
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new FormHttpMessageConverter());
messageConverters.add(new StringHttpMessageConverter());
messageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
restTemplate.setRequestFactory(new CommonsClientHttpRequestFactory());
MyResponse myResponse = restTemplate.getForObject(caasUrl, MyResponse.class);
Run Code Online (Sandbox Code Playgroud)
我的 restTemplate 在我的 spring-config 文件中定义为:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<constructor-arg>
<bean class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory">
<property name="readTimeout" value="630000" />
<property name="connectTimeout" value="30000" />
</bean>
</constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)
它工作正常,现在我的问题是我们如何将消息转换器列表传递给 xml 配置中的 restTemplate,因为我不想通过 java 代码做同样的事情。任何帮助请
spring-boot ×2
consul ×1
jackson ×1
java ×1
java-8 ×1
rest ×1
resttemplate ×1
spring-cloud ×1
spring-el ×1
spring-json ×1
yaml ×1