有没有办法提取所有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);
…
}
我仍然想知道为什么您需要弄混这些低级的东西。普通的应用程序代码实际上不应该执行任何操作。