有没有办法提取所有Repositories以及它们提供的Class<T>

我有一些带有限定符的Repositories:

@NetworkDataProvider
@Repository
public interface SwitchRepository extends CrudRepository<Switch, SwitchPK>

它们提供的bean带有元数据注释,这些元数据定义了它们在GUI中的显示方式:
@Entity
@Table(...)
public class Switch implements Serializable {

    @Column(name = "switch_name")
    @NotNull
    @UIName(value = "name of switch")
    @UIPrio(value = 2)
    private String name;

现在,我必须提取所有存储库及其对应的类:
@Autowired
@NetworkDataProvider
List<Repository<?>> repositories;

public List<RepositoryClassTuple> getAllNetworkDataProvider() {
    return repositories.map(r ->
        new RepositoryClassTuple(r, /* how to do this */ r.getProidedClass())).asList();
}

有什么办法吗?我确实需要存储库提供的数据Bean的注释。

最佳答案

Spring Data具有一种称为Repositories的类型,该类型采用一个ListableBeanFactory,然后可用于检查存储库:

Repositories repositories = new Repositories(beanFactory);

for (Class<?> domainType : repositories) {
  RepositoryInformation info = repositories.getRepositoryInformationFor(domainType);
  …
}

我仍然想知道为什么您需要弄混这些低级的东西。普通的应用程序代码实际上不应该执行任何操作。

10-01 03:12