没有类型为'org.springframework.data.rest.core.util.Java8PluginRegistry'的合格Bean

时间:2019-12-20 13:21:40

标签: java spring spring-boot spring-data-rest spring-hateoas

作为将spring应用程序迁移到springboot(2.1.7)的一部分,我面临着一个自定义 RepositoryEntityLinks 类的问题。以下类为构造函数自变量 PluginRegistry 带来了编译问题,因此我将其更改为 Java8PluginRegistry

之前:

<servers>
 <server>
  <id></id>
  <username>**user**</username>
  <password></password>
 </server>
 <server>
  <id></id>
  <username>**user**</username>
  <password></password>
 </server>
</servers>

之后:

public class CustomRepositoryEntityLinks extends RepositoryEntityLinks {

  private final ResourceMappings mappings;
  private final RepositoryRestConfiguration config;

  public CustomRepositoryEntityLinks(
          Repositories repositories,
          ResourceMappings mappings,
          RepositoryRestConfiguration config,
          PagingAndSortingTemplateVariables templateVariables,
          PluginRegistry<BackendIdConverter, Class<?>> idConverters) {

    super(repositories, mappings, config, templateVariables, idConverters);

    this.mappings = mappings;
    this.config = config;

  }

  @Override
  public LinkBuilder linkFor(Class<?> type) {
    ResourceMetadata metadata = mappings.getMetadataFor(type);
    return new CustomRepositoryLinkBuilder(metadata, config.getBaseUri());
  }
}

我唯一更改的是构造函数参数,从PluginRegistry到Java8PluginRegistry。

当我向此类添加@Component批注时,应用程序无法从此问题开始:

public class CustomRepositoryEntityLinks extends RepositoryEntityLinks {

  private final ResourceMappings mappings;
  private final RepositoryRestConfiguration config;

  public CustomRepositoryEntityLinks(
          Repositories repositories,
          ResourceMappings mappings,
          RepositoryRestConfiguration config,
          PagingAndSortingTemplateVariables templateVariables,
          Java8PluginRegistry<BackendIdConverter, Class<?>> idConverters) {

    super(repositories, mappings, config, templateVariables, idConverters);

    this.mappings = mappings;
    this.config = config;

  }

  @Override
  public LinkBuilder linkFor(Class<?> type) {
    ResourceMetadata metadata = mappings.getMetadataFor(type);
    return new CustomRepositoryLinkBuilder(metadata, config.getBaseUri());
  }
}

有人可以帮忙吗?在此先感谢:)

1 个答案:

答案 0 :(得分:0)

await不会公开RepositoryRestMvcConfiguration类型的bean。最近的更新可能会改变这种行为。如果遵循Java8PluginRegistry类中如何创建常规RepositoryEntityLinks bean的约定,则可以创建自定义RepositoryRestMvcConfiguration类的bean,如以下代码片段所示(其他参数)创建省略的CustomRepositoryEntityLinks实例)。

CustomRepositoryEntityLinks