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

Rai*_*tte 6 java spring-boot

在将应用程序从 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:抱歉我的英语:-)

Rai*_*tte 0

所以我找到了解决方案,这是我自己的错误...我将其放在由自动配置入口点导入的@AutoConfigureAfter位置。@Configuration所以我移动了自动配置类上的语句,现在一切都很好。新的注释@AutoConfiguration对于避免这种错误非常有用。