`
文章列表

获取配置属性

在系统中,由于有些属性不是固定的,比如数据库用户名与密码,所以需要相应的配置文件。而 配置文件有两件方式,一种是属性properties文件,一种是XML文件。 读取属性文件的方式在较早的配置文件中比较流行: Properties bundle = new Properties(); bundle.load(getClass().getResourceAsStream("messages.properties")) assertThat(bundle.getProperty("first.name"), is("Arthur" ...
Junit4更新的版本很多,现在已经更新到4.7了。发生的变化也相当的明显,为了更好的使用测试,有必要去学习一下其新的功能。 总的来说,其变化还是比较多的,下面列举一些改变之处: 1. 测试由原来的命名模式改变注解,即testXXX变为@Test。其中@Test还提供了额外的属性。如expected,表示期望抛出的异常,用法如下: @Test(expected = NullPointerException.class) public void unsupportedDBCheck() { throw new NullPointerException(); } 由于上面得到 ...
上一次介绍了一下DbUtils组件的基本用法,其中最值得关注的就是QueryRunner对象,这应该是整个DbUtils组件最重要的一个组件,因此下面将详细的介绍其功能。 DbUtils的方法并不多,除前面已经介绍的query对象外,还有两个比较重要的方法,分别是fillStatement与 batch方法,可以看出这两个方法都与Statement相关。 batch方法的参数形式为: batch(String sql, Object[][] params) 上面的方法执行一个批处理操作,其中params表示参数替换的数组,下面给出其简单用法: ............. ...
以前用惯了Hibernate,一下不用很不习惯,因为Hibernate的确为程序员省下了很多事。很多小的项目都在用Hibernate,暂且不说有没有跨数据库的特性,也不说对象关系映射是否重要,基本的SQL 动作处理也是一件很麻烦的事。 总结一下,至少有三方面比较麻烦: 1. 异常处理。如果直接用JDBC,几乎每个操作都要抛出几个异常,因此代码看起来很不优雅。 2. 创建的对象很多。大多数操作都要显示的建立statement,ResultSet对象,致使代码看起 来很长,其实这些都可以再封装。 3. JavaBean与ResultSet对象的转化。这是一个很枯燥的工作,而且这样的工作还会重复做很多 ...
JAVA的时间日期处理一直是一个比较复杂的问题,可以说大多数程序员都不能得心应手的处理这些问题,就算通过commons.lang.time包简化了,使用起来仍然有些麻烦,个人认为这可能是最复杂的一个子包。不过相对原始的JDK API,还是 ...
使用commons-lang的基本原则上就是要明折哪些类新版本的JDK中已经有相似的功能,而哪些类还不能由JDK替代,虽然本着尽量使用新版API的原则,但的确有些类是不能由新版API替代的。其中有一些类很有用处,下面将重点介绍本人认为很有用而且新版API不能替代的工具类。 Validate :这个类可能是最简单的了,但是这种思想是很值得学习的。在写方法的时候经常会遇见验证对象是否为空的问题,这样可以增加程序的可调试性。如: public static void escapeHtml(Writer writer, String string) throws IOException { ...
在网上找了一下,并没有发现关于commons-lang的详细使用方法,最近也有空,所以仔细的学习了一下,发在网上,也可供大家参考。 builder包的作用主要是为了帮助程序员创建一致的equals(Object), toString(), hashCode(), compareTo(Object) 方法。说实话这些方法如果完全由程序员自己来实现的确有些困难,有很多细节需要注意,但现实通过builder包提供的帮助,实现起来要容易得多。它包括以下几个类: CompareToBuilder EqualsBuilder HashCodeBuilder ReflectionToStringBui ...
突然想用一下c3p0连接池,在网上找了一下,要么根本不能用,要么就是达不到自己的要求。 不过后来想起以前有人写过这样的一个类,于是拿出来试了一下,果然能用,而且功能也非常完善。 环境: eclipse3.5 mysql-connector-java-5.1.7-bin.jar c3p0-0.9.1.2.jar commons-logging-1.1.1.jar JAVA类代码如下: public class ConnectionPool { public static void cleanUp(Connection con) { _instance._cleanUp( ...
开发环境: JDK:jdk1.5.0_16 服务器:jboss-4.2.2.GA JWS面向服务的开发有三中方式,从JAVA到WSDL方式是最简单的,利用JAX-WS的注解,在JAVA类上进行标识,然后以Servlet的形式发布,服务器在解析的过程中自动生成WSDL。 从WSDL到JAVA也比较简单,只是不太常用,不过还是有必要了解到底是怎么回事。 JBOSS自带了一个工具来实现此功能,ANT任务使用的类为:org.jboss.wsf.spi.tools.ant.WSConsumeTask,它为调用wsconsume命令 先看build.xml <?xml version=&q ...
为了减少代码中的NullPointerExceptions,可以用@Nullable对参数进行约束: 其实并不是异常就不存在,只是把它放在统一的地方进行管理了。 示例代码如下: @Test public void testCheckNotNull() { getUser("",null); } public void getUser(String username,@Nullable String address){ Preconditions.checkNotNull(username,"username"); ...

guice的单例

关于Guice的单例,自己一直都不是很明白,虽然其用户文档也看过几遍了,可能是本人太愚昧的缘故,一直很迷惑。今天又花了点时间试了一下,基本明白是怎么会事了。 要保证注入的实例是同一个对象,那么第二次注入时就不能再调用构造器了。 实现的方式用几种: this.bind(Service.class).to(ServiceImp.class).in(Scopes.SINGLETON); this.bind(Service.class).to(ServiceImp.class).asEagerSingleton() this.bind(Service.class).to(ServiceI ...
由于Spring太过庞大,所以本人也一直都不太喜欢,当guice1出来时,就关注过一阵子,但始终没有行动去试用,听说2.0出来了,最近闲着也没事,就去试用了一下,单从IOC方面来说,做得的确比较出色。 于是做了一个例子,把常用的功能都试了一下,其中需要的JAR包只有两个: aopalliance.jar guice-2.0.jar 下面是例子的代码: public interface Service { public void sayHello(); } public class ServiceImp implements Service { public void sa ...
找了很久,终于把这本书找到了。 其实仔细看了一下,中文版翻译得还是挺准确的,不过有时候感觉还是不太放心,所以在这里把英文版也保存好。

log4j

本来是挺简单的,但是懒得在网上找,故放在博客里,方便些。
事务分本地事务和分布式事务,本地事务相对简单,这里讨论一下分布事事务。 分布式环境如何管理涉及一个以上资源的事务呢?主要是通过被称为两阶段 提交(two-phase commit)来实现的。在执行一个以上的数据库操作时,如果第一个数据库操作成功,第二个数据库操作失败,要回滚第一个操作是非常困难的。所以在提交事务之前,两阶段提交协议会询问每个资源管理器的当前事务能否提交成功,如果任何一个资源管理器表示不能提交事务,那么就回滚整个事务。 EJB有两种使用事务的方式。 第一种方式通过容器管理的事务,叫CMT,另一种通过bean管理的事务叫BMT。 在CMT中,容器自动提供事务的开始、提交和回滚。总 ...
Global site tag (gtag.js) - Google Analytics