我有一个使用蛇案例命名策略(自定义 ObjectMapper)的客户端 api。一切都已正确设置并且运行良好,但当然 SBA(2.3.1 版)UI 的某些内容无法正常工作(指标、环境...)。我尝试实现 InstanceExchangeFilterFunction 以将蛇形大小写转换为 UI 的骆驼形大小写,但没有成功。如果有人可以提供如何正确执行此操作的示例,我将不胜感激。如果我理解正确,我想拦截客户端请求,并将其处理为驼峰式,我不知道该怎么做。谢谢
...
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sba</groupId>
<artifactId>SpringBootAdmin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringBootAdmin</name>
<description>SpringBootAdmin</description>
<properties>
<java.version>1.8</java.version>
<spring-boot-admin.version>2.3.1</spring-boot-admin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
...
@Import({SecurityConfig.class})
@Configuration
@EnableAdminServer
@SpringBootApplication
public class SpringBootAdminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApplication.class, args);
}
}
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Bean
public InstanceExchangeFilterFunction caseStrategy(List<HttpMessageConverter<?>> converters) {
for(HttpMessageConverter<?> converter : converters) {
if(converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonMessageConverter = (MappingJackson2HttpMessageConverter) converter;
ObjectMapper objectMapper = jsonMessageConverter.getObjectMapper();
((MappingJackson2HttpMessageConverter) converter).setObjectMapper(objectMapper);
}
}
return (instance, request, next) -> next.exchange(request);
}
}
我也试过这段代码,它解析了 SBA UI,但前端应用程序不起作用。
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonMessageConverter = (MappingJackson2HttpMessageConverter) converter;
ObjectMapper objectMapper = jsonMessageConverter.getObjectMapper();
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
}}
}