小编Ros*_*iar的帖子

Log4j隐式字符串格式

log4j v1.2.14用于登录我的项目,我也使用Java 7 String.format()将变量放在我的输出中.目前我正在写作

LOGGER.info(String.format("Your var is [%s] and you are [%s]", myVar, myVar1));
Run Code Online (Sandbox Code Playgroud)

这真的是输出字符串的最佳方式吗?我觉得log4j应该隐式实现如下:

LOGGER.info("Your var is [%s] and you are [%s]", myVar, myVar1);
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?此外,是否有支持这种情况的Java日志框架?

java logging log4j string-formatting

20
推荐指数
3
解决办法
2万
查看次数

用于静态值的Java Enum或HashMap

我正在生成一个CSV文件以及CTL文件以供使用sqlldr.CTL文件需要知道我要加载的列的名称,我的CSV文件需要知道这些字段的默认值.

/*
 * Models a line in the CSV file
 */
public class CSVRecord {
  ...
}

/*
 * Models the CTL file
 */
public class ControlFile {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这两个类初始化并在内部使用CSVExportFile,我有两种方法:

1.枚举

public enum Columns {
    ID("1"),
    NAME("Bob"),
    ...
}
Run Code Online (Sandbox Code Playgroud)

2. HashMap

public class CSVExportFile {
    private HashMap<String, String> columns;

    public CSVExportFile() {
        columns = new HashMap<String, String>();
        columns.put("ID", "1");
        columns.put("Name", "Bob");
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

HashMap降低了列的范围,将意味着他们只能内部使用CSVExportFile.我不打算扩展这个功能(所有的课程都是final),所以我不确定我能enum获得什么.

对于每种方法有什么争论,这是一个特殊情况,其中一个是优越的,还是一种优越的方式?

java enums

11
推荐指数
1
解决办法
8269
查看次数

Jenkins 上的 Java 文件行为

使用 Java Files API时,我在我的 (Linux) Jenkins 服务器上遇到了问题。

使用 JUnit 的集成测试失败TemporaryFolder。测试执行以下代码:

Path expectedPath = tmpFolder.getRoot().toPath().resolve("folder1/folder2");

// create files

assertTrue(Files.exists(expectedPath.resolve("newFile1.txt")));
Run Code Online (Sandbox Code Playgroud)

测试在本地通过,我在日志中看到expectedPath正在成功创建的 Jenkins 运行的日志,但让我感到困惑的是我的新文件的“路径”:

/tmp/junit0219318729037123/folder1\/folder2/newFile1.txt
Run Code Online (Sandbox Code Playgroud)

为什么\/被引进?这是 Linux 上文件的一些怪癖,还是我的tmpFolder?

java file-io junit jenkins

5
推荐指数
0
解决办法
235
查看次数

我可以使用 Freemarker 从 Dropwizard 视图创建电子邮件吗?

我有一个.ftl资源文件,用于通过 RESTful 端点显示它,我还想通过电子邮件将此表示发送给用户。Dropwizard 对视图做了一些魔术,允许将填充的模板主体返回到我的 REST 端点(我假设为 aString或类似 a 的更高级的东西StringBuilder)。

有没有办法在View不使用其余客户端的情况下请求 a 的主体?我也不想让我的电子邮件表示依赖于HTMLREST 客户端中使用的内容,所以没有建议只将电子邮件路由到wget点击端点的内容。

dropwizard source来看,似乎我需要ViewRenderer从某个地方获取 a ,可能是通过使用ServiceLoader.load()- 因为这是ViewBundle获取副本的方式(如果您不提供任何副本)。

freemarker dropwizard

1
推荐指数
1
解决办法
846
查看次数