在将应用程序从 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:抱歉我的英语:-)
所以我找到了解决方案,这是我自己的错误...我将其放在由自动配置入口点导入的@AutoConfigureAfter位置。@Configuration所以我移动了自动配置类上的语句,现在一切都很好。新的注释@AutoConfiguration对于避免这种错误非常有用。
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |