【问题标题】:Need to understand broadleaf commerce custom annotation implementation需要了解阔叶商务自定义注解实现
【发布时间】:2020-04-07 12:25:20
【问题描述】:

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

但是,这是如何在整个应用程序中处理的,我无法找到。到目前为止我所了解的我们可以使用反射或AOP进行处理。但这没有任何意义。

请帮忙。

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

【问题讨论】:

    标签: java annotations broadleaf-commerce


    【解决方案1】:

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

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

    #getClassMetadata 调用#inspect 并最终到达PersistenceManager#inspect。此方法使用 DynamicEntityDao 最终到达Metadata#getFieldMetadataForTargetClass。该方法通过反射获取类的每个字段,然后通过可用的 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#getFieldMetadataForTargetClass

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

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

    【讨论】:

      【解决方案2】:

      看看:

      https://www.baeldung.com/java-custom-annotation

      您将在自定义注释中获得有关:“默认”的解释。

      弗洛伦特·库德特。

      【讨论】:

      • 我不是在寻找通用答案,我很清楚注释的使用方式。我说的是提到的源代码。
      • 参见 Java 反射应用程序编程接口。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2021-02-14
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      相关资源
      最近更新 更多