Java 如何使用条件注释覆盖spring中的配置(例如)

Java 如何使用条件注释覆盖spring中的配置(例如),java,spring,spring-boot,spring-data,spring-data-rest,Java,Spring,Spring Boot,Spring Data,Spring Data Rest,我在依赖项jar中提供了以下类: @配置 @EnableSpringDataWebSupport 公共类RepositoryRestConfig扩展了RepositoryRestConfigurerAdapter{ @凌驾 public void configureRepositoryRestConfiguration(RepositoryRestConfiguration配置){ config.setBasePath(CoreHttpPathStore.REST\u路径); config.s

我在依赖项jar中提供了以下类:


@配置
@EnableSpringDataWebSupport
公共类RepositoryRestConfig扩展了RepositoryRestConfigurerAdapter{
@凌驾
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration配置){
config.setBasePath(CoreHttpPathStore.REST\u路径);
config.setReturnBodyOnCreate(true);
config.setReturnBodyOnUpdate(true);
config.hasResourceMappingForDomainType(GrantedAuthority.class);
}
@凌驾
公共void配置JacksonObject映射器(ObjectMapper映射器){
super.configureJacksonObject映射器(映射器);
registerModule(新的JavaTimeModule());
禁用(SerializationFeature.FAIL\u ON\u EMPTY\u bean);
}
}
我希望这是默认配置,但在某些情况下,我必须添加一些配置,为此,我在应用程序中创建了以下新类:


@配置
@EnableSpringDataWebSupport
公共类MyAppRepositoryRestConfig扩展了RepositoryRestConfig{
@凌驾
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration配置){
super.configureRepositoryRestConfiguration(配置);
config.exposeIdsFor(
User.class,
Client.class,
角色类,
组织类,
);
}
//@覆盖
//公共void配置JacksonObject映射器(ObjectMapper映射器){
//super.configureJacksonObject映射器(映射器);
//  }
}
问题是jar中的方法
configureRepositoryRestConfiguration
被调用了两次,这让我相信这不是我应该做的


如何有条件地启动配置?

您可以尝试这样做,将配置创建为bean:

@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
    return new RepositoryRestConfigurer() {
        @Override
        public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
            config.exposeIdsFor(Class1.class, Class2.class);
        }
    };
}