Java:Log4j2使用外部配置文件

使用异步写入日志

Log4j2可以使用异步的方式写入日志,这样可以增加一些性能.但是不能在配置文件中记录行号,记录行号或位置会导致速度变慢.(参考)

异步写入需要设置一个系统变量:

同时还需要 disruptor最新版,具体可以看下面的maven配置.

java标志

使用外部配置文件

使用外部配置文件的方式很简单,直接用下面的代码即可实现,但是注意必须要在获取Logger对象之前设置:

外部配置文件

可以直接放在项目外部任意位置,只要Java有权限访问到即可.

文件类型是:properties,因为Log4j2支持properties,yaml/yml,json,xml等类型的配置文件.

完整代码

Maven: pom.xml

到此.

Java 9:代码语法更新

更新

2017.10的某天,Oracle发布了Java 9 ,Java 9的语言只更新了一小部分(jshell 除外),下面是一些简单的解读.Oracle的原文地址在这:访问原文

java标志

更新的部分

代码务必在Java 9环境中尝试,不然会编译报错.

一共更新了大概5个部分的语法更新,记录如下.

try自动关闭资源优化

实现了AutoCloseable或者Closeable接口的类,可以用try实现自动关闭资源,在JDK中的FileReader,FileInputStream,FileOutputStream等这些类都是可以自动关闭的.

来个官方的例子:

然后按照这个,我自己简单写了一个版本:

简化了一些代码.

@SafeVarargs注解

@SafeVarargs注释只能应用于不能被覆盖的方法。 这些包括静态方法,最终实例方法,以及Java SE 9中的新增私有实例方法。

您可以将钻石语法与匿名内部类一起使用

可以在Java程序中编写的类型(如int或String)称为可指定类型。 无法用Java程序编写的编译器内部类型称为不可指定类型。

由于钻石操作员使用的推断,可能会出现不可指定的类型。 因为使用菱形和匿名类构造函数的推断类型可能不在类文件中签名属性所支持的类型集之外,所以在Java SE 7中不允许使用具有匿名类的菱形。

在Java SE 9中,只要推断的类型是可指定的,就可以在创建匿名内部类时使用菱形运算符。

不能单独使用下划线

在Java 9中,不能单独使用下划线,因为以后可能给下划线(_)特殊含义,所以在Java 9中定义如下变量会无法编译(在Java 8中使用无影响).

私有接口方法可用

在Java 9中,官方说明是可以使用私有接口方法,但我发现,公有方法也可以用(但必须是public static修饰才可以).

参考如下:

大概就这些.

Java:@SpringApplicationConfiguraction和@WebIntegrationTest在Spring Boot中不能使用的解决方案

@SpringApplicationConfiguraction和@WebIntegrationTest解决方案

在Spring Boot 1.5.7 中@SpringApplicationConfiguraction和@WebIntegrationTest中不能使用了.

找了半天总算找到了解决方案.

记录如下.

java标志

源码

如果在Spring Boot中使用了Spring Security,并且使用了自定义UserDetails,在测试的时候需要使用如下方式:

JdbcTemplate:实现分页功能

实现分页

在数据多的时候,不分页JVM就会挂掉.由于是用的JdbcTemplate,所以就研究了下JdbcTemplate的分页.记录如下.

java

源码

部分代码,后面看时间更新为完整.

分页实体类:

生成分页的SQL语句:

InterSystems Cache 数据库的分页工具类(下面有MySQL的):

分页查询组件:

MySQL分页实现:

Oracle分页实现:

Java 8:Stream的使用

记录

开始在工作中接触一些Java 8 的内容,也开始使用Stream处理集合.下面是一些代码,有的是自己写的,有的来源于网上.

java标志

源码