小编yai*_*air的帖子

我是否正确使用Java 7 try-with-resources

我期待缓存的读取器和文件读取器关闭,如果异常抛出则释放资源.

public static Object[] fromFile(String filePath) throws FileNotFoundException, IOException
{
    try (BufferedReader br = new BufferedReader(new FileReader(filePath)))
    {
        return read(br);
    } 
}
Run Code Online (Sandbox Code Playgroud)

但是,是否需要有catch成功关闭的条款?

编辑:

从本质上讲,Java 7中的上述代码与Java 6中的代码相同:

public static Object[] fromFile(String filePath) throws FileNotFoundException, IOException
{

    BufferedReader br = null;

    try
    {
        br = new BufferedReader(new FileReader(filePath));

        return read(br);
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        try
        {
            if (br != null) br.close();
        }
        catch(Exception ex)
        {
        }
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

java-7 try-with-resources

86
推荐指数
2
解决办法
6万
查看次数

如何在Spring/Tomcat webapp中加载$ {catalina.home} /conf/application.properties?

如何加载${catalina.home}/conf/application.propertiesSpring/Tomcat webapp?

在StackOverflow和Google上四处看看,我看到很多讨论声称它是可能的.但是,这对我不起作用.根据我的研究建议,我的Spring applicationContext.xml文件包含以下行:

<context:property-placeholder location="${catalina.home}/conf/application.properties"/>
Run Code Online (Sandbox Code Playgroud)

但是我在日志中得到了这个:

Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties]
Run Code Online (Sandbox Code Playgroud)

从日志条目中我可以看到${catalina.home}正在正确扩展.当我在applicationContext.xml文件中手动展开它时,它返回相同的错误.以下内容按预期返回application.properties文件的内容:

cat /Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties
Run Code Online (Sandbox Code Playgroud)

所以道路显然是正确的.这是webapp安全性还是Tomcat服务器配置问题?

spring tomcat

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

所有Thread方法(如getName/setName)都是线程安全的吗?

使用/ 和其他一些来自不同线程Thread的方法是否安全?API没有说什么,而是根据源代码判断setNamegetName

private char name[];

public final void setName(String name) {
    checkAccess();
    this.name = name.toCharArray();
}

public final String getName() {
    return String.valueOf(name);
}
Run Code Online (Sandbox Code Playgroud)

它似乎可能导致内存一致性错误.

java concurrency multithreading thread-safety

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

资源不在java项目的构建路径上?

我的Eclipse上有一个Maven项目.当我执行调用层次结构时,我收到消息:

资源不在java项目的构建路径上.

需要为此配置什么?

eclipse maven

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

在 docker build 中打印 ARG 值

有没有办法打印ARGs 值,这些值通过标志传递--build-argdocker build命令?

仅仅使用是不够的,因为我希望它在不允许的部分RUN echo $ARG_NAME之前打印。FROM

重点是立即查看这些值,以便我可以快速停止构建,防止下载错误的基础映像。

已经搜索了 docker docs 和 google。也许这里有人可以提供一些线索。

docker docker-build

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

URI 中的 REST 父 ID

假设我的模型由一个实体组成,该实体通过属性Parent引用一些实体。根据 REST 原则,特定 URI 的路径段将为。ChildchildrenChild/parent/{parentId}/children/{childId}

当对 执行更新操作时Child,通常childId我只需要唯一地标识正确的Child,并认为parentId路径中的段是多余的。随着层次结构变得复杂,这种冗余会加剧。

现在我想起来了,它也可能会导致意外的行为:如果程序员不知道的话,访问具有相同childId不同的URI 可能会导致相同的行为。 当访问不相关的下parentId一个时可能会发生的情况是应该返回客户端错误代码。ChildParent

目前我认为也许不应该向 REST API 引入任何层次结构,除非它绝对直观,因为它:

  1. 使 URI(即 API)更加复杂。强化可维护性。
  2. 这种冗余可能会导致用户对访问某些 URI 的结果进行推理。
  3. 对于不知情的程序员来说,冗余可能会成为一个陷阱。

有没有办法避免这种冗余并仍然符合 REST 原则?

java rest uri

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

使Spring替换不同文件类型的占位符(除了Spring的配置)

有没有办法让spring(v.3.0)解析文件中的占位符.properties?我知道我可以写自己的PropertyPlaceholderConfigurer但我正在寻找一种"更清洁"的方式来做到这一点.

编辑:

更具体地说,我实际想要做的是替换.sql文件中的占位符.因此占位符的值存储在其中,.properties但占位符用于.sql文件中.

java spring properties placeholder

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