我使用了以下配置:
@Profile("database")
@Configuration
@EnableJpaRepositories(basePackages = "com.example.repository")
public class RepositoryConfig {
}
public interface MyRepositoryInterface extends PagingAndSortingRepository<MyEntity, Long> {
// ...
}
它创造了一个 PagingAndSortingRepository
存储库。如您所见,只有在“数据库”配置文件处于活动状态时才会创建此配置文件。有几个其他的复制被激活与其他配置文件。
现在我想创建一条对话错误消息,以防没有创建存储库(例如,使用错误的配置文件)。
第一个想法是: @Profile("!database & !filesystem ...")
但是,这对于许多配置文件来说太麻烦,需要维护。
因此,下一个想法是:
@Configuration
public class OnMissingRepository {
@ConditionalOnMissingBean(MyRepositoryInterface.class)
@Bean
public MyRepositoryInterface missingBean() {
throw new IllegalArgumentException("You forgot to specify a profile");
}
}
不幸的是, @EnableJpaRepositories
似乎直到之后才创建存储库bean @ConditionalOnMissingBean
已经过评估。我每次都有上述例外。
有没有办法在这里实现这一点?
谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!