Как я могу переопределить конфигурацию весной, используя условные аннотации (например) - PullRequest
0 голосов
/ 10 марта 2020

У меня есть следующий класс, доступный в банке зависимостей:


@Configuration
@EnableSpringDataWebSupport
public class RepositoryRestConfig extends RepositoryRestConfigurerAdapter {

    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.setBasePath(CoreHttpPathStore.REST_PATH);
        config.setReturnBodyOnCreate(true);
        config.setReturnBodyOnUpdate(true);
        config.hasResourceMappingForDomainType(GrantedAuthority.class);
    }

    @Override
    public void configureJacksonObjectMapper(ObjectMapper mapper) {
        super.configureJacksonObjectMapper(mapper);
        mapper.registerModule(new JavaTimeModule());
        mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
    }

}

Я хочу, чтобы это была конфигурация по умолчанию, но в некоторых случаях я должен добавить некоторую конфигурацию, для этого я создаю в своем применение этого нового класса:


@Configuration
@EnableSpringDataWebSupport
public class MyAppRepositoryRestConfig extends RepositoryRestConfig {

    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        super.configureRepositoryRestConfiguration(config);
        config.exposeIdsFor(
                User.class,
                Client.class,
                Role.class,
                Organization.class,
        );
    }

//  @Override
//  public void configureJacksonObjectMapper(ObjectMapper mapper) {
//      super.configureJacksonObjectMapper(mapper);
//  }

}

Проблема в том, что метод configureRepositoryRestConfiguration в банке вызывается дважды, что заставляет меня поверить, что это не то, что я должен делать.

Как можно Я загружаю свою конфигурацию условно?

1 Ответ

0 голосов
/ 10 марта 2020

Вы можете попытаться сделать это, создать свой конфиг в виде компонента:

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