gpt4 book ai didi

java - 需要了解阔叶商务自定义注释实现

转载 作者:行者123 更新时间:2023-12-02 08:47:09 24 4
gpt4 key购买 nike

我一直在尝试浏览 Broadleaf Commerce 的代码。使用了多个自定义注释,但我无法找到那里的处理器。有人能帮我一下吗。以 @AdminPresentation 为例,它是包 org.broadleafcommerce.common.presentation 中的自定义注释;

但是,我无法找到整个应用程序如何处理它。到目前为止我所了解的我们可以使用Reflection或AOP对其进行处理。但没有什么可做的。

请帮忙。

源代码 - https://github.com/BroadleafCommerce/BroadleafCommerce

最佳答案

简单来说,org.broadleafcommerce.openadmin.server.dao.provider.metadata.BasicFieldMetadataProvider#addMetadata 是处理这些注释的地方。

在更广泛的层面上,openadmin 中的 Controller 将使用 AdminEntityService 来获取 ClassMetaData(有关如何向管理员用户显示类的所有数据)。 @AdminPresentation 注释是此数据的来源之一。方法 AdminEntityServiceImpl#getClassMetadata 是获取 ClassMetaData 的主要网关。

#getClassMetadata 调用 #inspect 并最终到达 PersistenceManager#inspect。此方法使用 DynamicEntityDao 最终到达 Metadata#g​​etFieldMetadataForTargetClass。该方法通过反射获取类的每个字段,然后通过可用的 FieldMetadataProvider 处理每个字段。 FieldMetadataProviders 将 java.lang.reflect.Field 转换为 org.broadleafcommerce.openadmin.dto.FieldMetadata

任何提供的 FieldMetadataProvider 都可以贡献字段元数据。此元数据在 FormBuilderService 中用于构建管理页面。

类引用:

AdminEntityService - org.broadleafcommerce.openadmin.server.service.AdminEntityServiceImpl

PersistenceManager - org.broadleafcommerce.openadmin.server.service.persistence.PersistenceManagerImpl#inspect

DynamicEntityDao - org.broadleafcommerce.openadmin.server.dao.DynamicEntityDaoImpl#getPropertiesForEntityClass

元数据 - org.broadleafcommerce.openadmin.server.dao.Metadata#g​​etFieldMetadataForTargetClass

FieldMetadataProvider - org.broadleafcommerce.openadmin.server.dao.provider.metadata.FieldMetadataProviderorg.broadleafcommerce.openadmin.server.dao.DynamicEntityDaoImpl#fieldMetadataProviders

FormBuilderService - org.broadleafcommerce.openadmin.web.service.FormBuilderServiceImpl

关于java - 需要了解阔叶商务自定义注释实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61005608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com