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

标签 java annotations broadleaf-commerce

我一直在尝试浏览 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/

相关文章:

java - RAD 和 Websphere : How to deploy a war/binary as opposed to the Java code?

php - Symfony4 : The annotation does not exist, 或无法自动加载(Symfony\Component\Validator\Constraints)

java - 'value' 是java关键字吗?

spring - broadleaf commerce 演示站点登录链接被重定向

java - Broadleaf Commerce 3.0 缺失的 Artifact

java - 从java调用javascript函数的正确方法?

java - 在 libfontmanager.dylib 中将 OpenJDK9 与 FreeType @ref 捆绑在一起

读取字节数组中的文件时出现 Java 堆空间错误

java - 为什么@Autowired注释将同一类的每个bean关联到context.xml中?

mysql - BroadLeafCommerce : DemoSite not showing products