当前位置: 首页 > 知识库问答 >
问题:

使用Univocity注释bean到部分记录

欧阳杰
2023-03-14

我想让Univocity使用带注释的bean实例来确定CSV内容的一部分,即仅前几列。其余的列由一些复杂的编程逻辑提供,这些逻辑独立于bean实例或类型。

我知道Univocity可以将带注释的bean转换为记录,但我找不到如何处理带注释的bean以获得部分记录,而我可以在不使用带注释的bean的情况下以编程方式确定记录的其余部分。

bean将使用@Headers和@Parsed注释进行注释。(带注释的bean将由我的库的用户提供。)

我想实现与以下功能相当的东西。

public void toCsv(Map<UserBean, MyContent> entries) {
    CsvWriter writer = …
    List<String> beanHeaders = someUnivocityHelper.getAsHeaders(UserBean.class);
    List<String> allHeaders = ImmutableList.builder().addAll(beanHeaders).addAll(myHeaders).build();
    writer.writeHeaders(allHeaders);
    for (Entry<UserBean, MyContent> entry : entries.entrySet()) {
        UserBean userBean = entry.getKey();
        Map<String, Object> beanAsMap = someUnivocityHelper.getAsMap(userBean);
        beanAsMap.entrySet().stream().forEach(e -> writer.addValue(e.getKey(), e.getValue()));
        MyContent content = entry.getValue();
        // Here I use content and the writer to write the rest of the record
        …
        writer.writeValuesToRow();
    }
}

如何使用univocity从bean类中检索头和从bean实例中检索解析的值?

共有1个答案

越安翔
2023-03-14

要读取仅在bean中定义的头,您可能可以尝试@Headers(提取=true),因此库将使用来自用户bean的注释。之后如果你想写更多的头-只需设置所有需要的头csv作家:CsvWriterSettings.set头(allHeaders)

还可以看看com。统一性。解析器。注释。帮手。AnnotationHelper公共类。

 类似资料:
  • 我已经使用Spring几十年了,但以前从未遇到过这个用例。 是否有方法注入所有带特定注释的bean,例如,所有带服务的bean或所有带自定义注释的bean? 我唯一的想法是注入上下文,获取所有bean并手动过滤。如果这是唯一的方法,Spring是否公开了一种递归扫描类层次结构以查找(元)注释的方法(因为大多数Spring注释都可以用作元注释)?

  • 我有一个Spring bean,在Spring Bean中我有一个对其他bean列表的依赖项。我的问题是:如何注入一个通用的bean列表作为该bean的依赖项? 例如,一些代码: 我的豆子: 问题是:;如何在Painter中获得颜色列表?另外,还有一点:我应该让@Configuration返回接口类型还是类? 谢谢你的帮助!

  • 问题内容: 我的spring bean具有一个带有唯一强制性参数的构造函数,我设法用xml配置对其进行了初始化: 然后,我像这样使用此bean,并且效果很好。 但是我想用注释指定contructor arg值,例如 这可能吗 ? 提前致谢 问题答案: 首先,必须在bean定义中而不是在注入点中指定构造函数arg。然后,你可以利用spring的注释(spring 3.0) 就我所看到的问题而言,这可

  • 问题内容: 据我所知,要使用@Annotations(或C#中的[Attributes]),必须具有对类元数据的引用,以便您可以询问是否对类进行了注释(归因)。 我的问题是,JSF实现如何找到使用@ManagedBean注释的所有类?它会扫描类路径中的所有类吗?还是有一种方法实际上可以“查询” JVM中的带注释的类? 我之所以这样问是因为,当我将带注释的后备bean直接放在Web项目中时,没有问题

  • 问题内容: 有人可以给MWE 直接在方法上使用注释的方法吗? 我已经看到了无数的关于在类定义中使用它的示例-但还没有方法的示例。 引用文档: 这种添加到一个类定义或 一个方法 @Target(value = {TYPE, METHOD }) 因此,我认为还有一种可能性和预期的用途-但不幸的是,我无法弄清楚。 问题答案: 这里的DataSource类具有属性url,用户名,密码,driverClas

  • 我试图用< code > swagger-maven-plugin 来记录我的api。 当我用< code>@Parameter注释路由参数时,只要没有用< code>@BeanParam注释,就会在openapi生成的文件中很好地记录下来。 如招摇岩心文件所述, @Parameter可以代替或与JAX-RS参数注释(@PathParam、@QueryParam、@HeaderParam、@@Fo