gpt4 book ai didi

java - 我可以使用哪些库将 POJO 绑定(bind)到外部文件以实现 TDD,而不需要太多开销?

转载 作者:行者123 更新时间:2023-12-01 16:12:55 27 4
gpt4 key购买 nike

我需要一种将 POJO 对象绑定(bind)到外部实体的方法,外部实体可以是 XML、YAML、结构化文本或任何易于编写和维护的内容,以便为单元测试和 TDD 创建模拟数据。下面是我尝试过的一些库,但它们的主要问题是我被困在 Java 1.4 中(至少超过 3 个月)。我想知道我可以使用什么来代替,以尽可能低的开销和预先设置(例如使用模式或 DTD),并且没有复杂的 XML。以下是我真正喜欢的库(但显然不适用于 1.4 或者不支持构造函数 - 你必须有 setter):

RE-JAXB(或Really Easy Java XML Bindings)

http://jvalentino.blogspot.com/2008/07/in-response-to-easiest-java-xml-binding.html http://sourceforge.net/projects/rejaxb/

无缝绑定(bind):

<item>
<title>Astronauts' Dirty Laundry</title>
<link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>
<description>Compared to earlier spacecraft, the International Space
Station has many luxuries, but laundry facilities are not one of them.
Instead, astronauts have other options.</description>
<pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>
<guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>
</item>

对此:

@ClassXmlNodeName("item")
public class Item {
private String title;
private String link;
private String description;
private String pubDate;
private String guid;

//getters and settings go here...
}

使用:

Rss rss = new Rss();
XmlBinderFactory.newInstance().bind(rss, new File("Rss2Test.xml"));

问题:它依赖于注释,因此对 Java 1.4 没有好处

jYaml http://jyaml.sourceforge.net/

无缝绑定(bind):

--- !user
name: Felipe Coury
password: felipe
modules:
- !module
id: 1
name: Main Menu
admin: !user
name: Admin
password: password

对此:

public class User {
private String name;
private String password;
private List modules;
}

public class Module {
private int id;
private String name;
private User admin;
}

使用:

YamlReader reader = new YamlReader(new FileReader("example.yaml"));
reader.getConfig().setClassTag("user", User.class);
reader.getConfig().setClassTag("module", Module.class);
User user = (User) reader.read(User.class);

问题:它不适用于构造函数(因此对于不可变对象(immutable对象)没有好处)。我必须更改对象或编写自定义代码来处理 YAML 解析。

请记住,我希望尽可能避免编写数据描述符,我想要一些“正常工作”的东西。

你有什么建议吗?

最佳答案

如果要填充的对象是简单的 bean,那么查看 apache common 的 BeanUtils 类可能是个好主意。 populate() 方法可能适合所描述的情况。一般来说,像 Spring 这样的依赖注入(inject)框架非常有用,但这可能无法解决当前的问题。对于 xml 形式的输入,jibx 可能是一个不错的选择,因此 jaxb 1.0 也是如此。

关于java - 我可以使用哪些库将 POJO 绑定(bind)到外部文件以实现 TDD,而不需要太多开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/195639/

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