我已经使用try with资源重写了一个Play2/JDBC查询,但我不确定这是否正确。第一个try块处理Connection和准备语句。第二次尝试处理ResultSet。
理论上连接,语句和结果集在任何情况下都会被正确关闭?是这样吗?还是我错过了需要处理的东西?
public static List<Item> findBySimpleSQL(String where, java.lang.Object... params) {
List<Item> collection = new ArrayList<Item>();
try (Connection connection = play.db.DB.getConnection();
PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM items WHERE "+where);)
{
int pos = 1;
for (java.lang.Object o : params) {
if (o instanceof Integer) {pstmt.setInt(pos, (int) o);}
if (o instanceof Long) {pstmt.setLong(pos, (long) o);}
if (o instanceof String) {pstmt.setString(pos, (String) o);}
pos++;
}
try (ResultSet rs = pstmt.executeQuery()) {
while (rs.next()) collection.add(parse(rs));
}
} catch (Exception e) {
Logger.error("Error message: "+e);
}
return collection;
}
-- 向捕获块添加了日志记录。
摘自甲骨文的“尝试资源声明”:
"资源是程序完成后必须关闭的对象。try-with-Resource语句确保每个资源在语句结束时关闭。任何实现java.lang.AutoCloseable的对象,包括实现java.io.Closeable的所有对象,都可以用作资源。"
在您的例子中,Connection
、Presared语句
和ResultSet
都实现了AutoCloseable
接口,所以答案是:
是的,它们将被正确关闭(不确定任何情况,编码和绝对不能很好地相处)。
您可能希望阅读上述链接,并确保正确捕获可能的异常。
问题内容: 我正在尝试绘制Play框架如何支持转义。 这是一个很好的页面,阐明了所需的功能:https : //www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet 因此,我尝试将其与Play模板功能相关联,并充分了解Play的功能和不功能。 HTML转义:或函数 属性转义:我找不到内置解决方案
null
我正在尝试将powermock和mockito与Spring一起使用。我以前用过,但没有Spring。Spring-cloud-stream-test-support已经提供了和一些其他依赖项。Mockito在这个JUnit版本中也运行良好。 但是,我必须模拟一些静态方法调用,所以我需要使用PowerMock。我已经尝试将Powermock包含在JUnit和Mockito的这些版本中。 JUnit
**编程对象,Settings.UseJavaCP.Value=true。 Build.Scala
问题内容: 我已经开发了一个Spring / JPA应用程序: 服务,存储库和域层即将完成 。 该 所缺的只是层是网络层 。我正在考虑将Playframework 2.0用于Web层,但不确定是否可以 在Playframework 2.0类中注入/使用spring bean 。 这可能吗?如果可以,怎么办? 问题答案: 您可以。已针对Play 2.5.x更新: https://github.com