小编Rai*_*tte的帖子

从 2.6.2 升级到 2.7.0 后出现奇怪的行为

在将应用程序从 SpringBoot 2.6.2 升级到 2.7.0 时,我遇到了奇怪的行为。我有一个具有自动配置功能的启动器,它负责初始化 JPA 审核:

@Configuration
@ConditionalOnBean(DataSource.class)
@ConditionalOnClass({DataSource.class, AuditorAware.class, SecurityContextHolder.class})
@AutoConfigureAfter({HibernateJpaAutoConfiguration.class, SecurityAutoConfiguration.class, ClockSpringConfiguration.class})
@EnableJpaAuditing(auditorAwareRef = "auditorProvider", dateTimeProviderRef = "dateTimeProvider")
public class JpaAuditingSpringConfiguration {
    @Bean
    public AuditorAware<String> auditorProvider() {
        return () ->
                Optional.ofNullable(SecurityContextHolder.getContext())
                        .map(SecurityContext::getAuthentication)
                        .map(Authentication::getName);
    }

    @Bean
    public DateTimeProvider dateTimeProvider(Clock clock) {
        return () ->
                Optional.of(clock)
                        .map(Clock::instant);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个启动器在 2.6.2 中很好。但在2.7.0中@ConditionalOnBean(DataSource.class)避免了starter执行初始化。当我删除该声明时,一切都恢复正常。

不明白为什么更新后就不行了?也许我误用或忘记了一些声明。我尝试的行为是仅在注册数据源 bean 时才应用自动配置。

如果有人可以帮助我吗?

PS:抱歉我的英语:-)

java spring-boot

6
推荐指数
1
解决办法
318
查看次数

标签 统计

java ×1

spring-boot ×1