在我的Spring Boot应用程序中,我使用反应性WebFlux WebClient从SSE(服务器发送事件)终结点检索流式JSON数据。修改默认的自动配置Jackson ObjectMapper行为,通过设置Spring Boot中的配置选项,如spring.jackson.deserialization.read-date-timestamps-as-nanos秒=false
,如官方文档所建议的,对WebFlux WebClient没有影响。我还尝试了这个SO线程中概述的其他建议,比如为WebFlux配置创建自定义bean,但它们没有帮助,配置仍然没有被选中。
在花了相当长的时间调试SpringWebFlux/Jackson库代码之后,我终于找到了一个提示,可以通过查看反应式WebFlux WebClient文档来解决这个问题。要使WebClient使用默认的自动配置Jackson ObjectMapper,需要一些自定义管道。解决方案是在创建WebClient的新实例时,配置用于处理服务器发送事件的默认解码器。以下是示例代码:
@Component
public class MarketDataFetcher implements CommandLineRunner {
// ...
private final WebClient webClient;
public MarketDataFetcher(ObjectMapper objectMapper) {
webClient = createWebClient(objectMapper);
}
private WebClient createWebClient(ObjectMapper objectMapper) {
return WebClient.builder()
.codecs(configurer -> configurer.defaultCodecs()
.serverSentEventDecoder(new Jackson2JsonDecoder(objectMapper)))
.baseUrl(BASE_URL)
.build();
}
}
ObjectMapper
由Spring自动注入,因此不需要@Autowired
注释。
如果能在正式文件中以某种方式使这一点更加明确,肯定会有所帮助。希望这个答案对面临类似问题的人有用!
4.1 根据条件的自动配置 @conditional是基于条件的自动配置,一般配合Condition接口一起使用,只有接口实现类返回true,才装配,否则不装配. 用实现了Condition接口的类传入@Conditional中 @Conditional可以标记在配置类的方法中,也可以标记在配置类上.标记的位置不同,作用域不同. @Conditional可以传入多个实现了condition接口的类
与Jquery Mobile自动初始化共同协作 Working with Jquery Mobile's Auto-initialization 不像其他的Jq项目,比如jq和jq ui,Jquery Mobile会在加载到增强特性时马上应用它(远早于document.ready事件发生时)。这些特性会基于Jquery Mobile的默认配置应用,是针对默认的情形设计的,他可能符合你的需求,也可能
我有一个简单的SpringBoot应用程序,我想使用AutoConfiguration来配置Tomcat jdbc池数据源。 我正在使用这些Spring依赖项: 以下是我的 application.yml 文件中的数据源属性: 我确定正在加载属性,因为应用程序正在获取其他值。 我在配置文件中将 bean 定义为: 我将数据源注入到我的DAO中,如下所示: 如果我在getDataSource()方法
本机Spring Boot自动配置(例如one)也可以检测主类中声明的bean(例如注释的方法)。 如何对主类中声明的bean进行正确的bean检测? 编辑
我正在使用带有Spring Boot(2.3.3版)的H2数据库和H2数据库的所有默认设置。 这是我申请的所有文件。 pom.xml
spring-引导利用spring配置文件(http://docs.Spring.io/Spring-boot/docs/current/reference/html/boot-features-profiles.html),例如,它允许为不同环境提供单独配置。我使用这个特性的一种方法是配置测试数据库以供集成测试使用。然而,我想知道是否有必要创建我自己的配置文件'test',并在每个测试文件中显式