Я пытался решить это в течение нескольких дней. Это то, что я обнаружил после отладки того, как Spring инициализирует контекст приложения (и с этим бины, ткач и т. Д.).
У нас было несколько классов @Configuration, которые определяли @Bean, которые были напечатаны с помощью сущностей. Как это:
@Configuration
public class UserModuleConfiguration {
@Bean
public BasePresenter<EUser> userPresenter() {
return new BasePresenter<EUser>() {
};
}
}
Когда я удалил сущность из возвращаемого типа этого метода, все работало. Обратите внимание, что поскольку существует более одной из этих конфигураций, предоставляющих BasePresenter для разных объектов, вы должны использовать @Qualifier или просто создавать их экземпляры самостоятельно. Как то так:
@Configuration
public class UserModuleConfiguration {
@Bean("userPresenter")
public BasePresenter<?> userPresenter() {
return new BasePresenter<EUser>() {
};
}
}
или
@Component
public class UserPresenter<EUser> extends BasePresenter{
}
Внутренне, перед тем как начать «оценивать» конфигурации, пружина определяет, какие бины доступны, чтобы определить, должны ли быть загружены определенные конфигурации (см. @ConditionalOnMissingBean и т. П.), И, очевидно, в процессе выполнения этой пружины загружаются некоторые из супер классы сущностей. Я просто хотел оставить это здесь, потому что я действительно не нашел ничего об этой возможной причине, и мне потребовались целые годы, чтобы найти это.